# frozen_string_literal: true

require 'forwardable'
require 'cucumber/core/test/doc_string'

module Cucumber
  class Runtime
    # This is what a programming language will consider to be a runtime.
    #
    # It's a thin class that directs the handful of methods needed by the programming languages to the right place
    class ForProgrammingLanguages
      extend Forwardable

      attr_reader :support_code

      def initialize(support_code, user_interface)
        @support_code = support_code
        @user_interface = user_interface
      end

      def_delegators :@user_interface,
                     :embed,
                     :attach,
                     :ask,
                     :puts,
                     :features_paths,
                     :step_match

      def_delegators :@support_code,
                     :invoke_dynamic_steps,
                     :invoke_dynamic_step
    end
  end
end
