Sha256: cd169c20b7a54dea6a8a7fc4c0dff3aa26d44fb93d585f684a3511be6be53cfe

Contents?: true

Size: 853 Bytes

Versions: 5

Compression:

Stored size: 853 Bytes

Contents

require 'gherkin/token_scanner'
require 'gherkin/token_matcher'
require 'gherkin/parser'
require 'gherkin/dialect'

module Cucumber
  module Gherkin
    class StepsParser
      def initialize(builder, language)
        @builder = builder
        @language = language
      end

      def parse(text)
        dialect = ::Gherkin::Dialect.for(@language)
        token_matcher = ::Gherkin::TokenMatcher.new(@language)
        token_scanner = ::Gherkin::TokenScanner.new(feature_header(dialect) + text)
        parser = ::Gherkin::Parser.new
        gherkin_document = parser.parse(token_scanner, token_matcher)

        @builder.steps(gherkin_document[:feature][:children][0][:steps])
      end

      def feature_header(dialect)
        %(#{dialect.feature_keywords[0]}:
            #{dialect.scenario_keywords[0]}:
         )
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
cucumber-2.99.0 lib/cucumber/gherkin/steps_parser.rb
mobiusloop-0.1.5 lib/cucumber/gherkin/steps_parser.rb
cucumber-2.4.0 lib/cucumber/gherkin/steps_parser.rb
mobiusloop-0.1.3 lib/cucumber/gherkin/steps_parser.rb
mobiusloop-0.1.2 lib/cucumber/gherkin/steps_parser.rb