Sha256: d7cf4c8d96724c176500d125b67bc2928f6d7662bfe8c1dd2c0d42c0454803e4

Contents?: true

Size: 1.8 KB

Versions: 14

Compression:

Stored size: 1.8 KB

Contents

require 'multi_json'
require 'socket'
require 'cucumber/wire_support/connection'
require 'cucumber/wire_support/configuration'
require 'cucumber/wire_support/wire_packet'
require 'cucumber/wire_support/wire_exception'
require 'cucumber/wire_support/wire_step_definition'

module Cucumber
  module WireSupport

    # The wire-protocol (language independent) implementation of the programming
    # language API.
    class WireLanguage
      include LanguageSupport::LanguageMethods

      def initialize(_=nil)
        @connections = []
      end

      def load_code_file(wire_file)
        config = Configuration.from_file(wire_file)
        @connections << Connection.new(config)
      end

      def snippet_text(code_keyword, step_name, multiline_arg, snippet_type)
        snippets = @connections.map do |remote|
          remote.snippet_text(code_keyword, step_name, MultilineArgClassName.new(multiline_arg).to_s)
        end
        snippets.flatten.join("\n")
      end

      def step_matches(step_name, formatted_step_name)
        @connections.map{ |c| c.step_matches(step_name, formatted_step_name)}.flatten
      end

      def begin_scenario(scenario)
        @connections.each { |c| c.begin_scenario(scenario) }
        @current_scenario = scenario
      end

      def end_scenario
        scenario = @current_scenario
        @connections.each { |c| c.end_scenario(scenario) }
        @current_scenario = nil
      end

      class MultilineArgClassName
        def initialize(arg)
          arg.describe_to(self)
          @result = ""
        end

        def data_table(*)
          @result = "Cucumber::MultilineArgument::DataTable"
        end

        def doc_string(*)
          @result = "Cucumber::MultilineArgument::DocString"
        end

        def to_s
          @result
        end
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
cucumber-2.1.0 lib/cucumber/wire_support/wire_language.rb
cucumber-2.0.2 lib/cucumber/wire_support/wire_language.rb
cucumber-2.0.1 lib/cucumber/wire_support/wire_language.rb
cucumber-2.0.0 lib/cucumber/wire_support/wire_language.rb
cucumber-2.0.0.rc.5 lib/cucumber/wire_support/wire_language.rb
cucumber-2.0.0.rc.4 lib/cucumber/wire_support/wire_language.rb
cucumber-2.0.0.rc.3 lib/cucumber/wire_support/wire_language.rb
cucumber-2.0.0.rc.2 lib/cucumber/wire_support/wire_language.rb
cucumber-2.0.0.rc.1 lib/cucumber/wire_support/wire_language.rb
cucumber-2.0.0.beta.5 lib/cucumber/wire_support/wire_language.rb
cucumber-2.0.0.beta.4 lib/cucumber/wire_support/wire_language.rb
cucumber-2.0.0.beta.3 lib/cucumber/wire_support/wire_language.rb
cucumber-2.0.0.beta.2 lib/cucumber/wire_support/wire_language.rb
cucumber-2.0.0.beta.1 lib/cucumber/wire_support/wire_language.rb