Sha256: 3abd9af0a61e609f147b22ec9b8e7818ebacee70ad3afee685b1ae1226ee16b1

Contents?: true

Size: 855 Bytes

Versions: 6

Compression:

Stored size: 855 Bytes

Contents

# frozen_string_literal: true
require 'gherkin/token_scanner'
require 'gherkin/parser'
require 'gherkin/dialect'

module Cucumber
  module Gherkin
    class DataTableParser
      def initialize(builder)
        @builder = builder
      end

      def parse(text)
        token_scanner = ::Gherkin::TokenScanner.new(feature_header + text)
        parser = ::Gherkin::Parser.new
        gherkin_document = parser.parse(token_scanner)

        gherkin_document[:feature][:children][0][:steps][0][:argument][:rows].each do |row|
          @builder.row(row[:cells].map { |cell| cell[:value] })
        end
      end

      def feature_header
        dialect = ::Gherkin::Dialect.for('en')
        %(#{dialect.feature_keywords[0]}:
            #{dialect.scenario_keywords[0]}:
              #{dialect.given_keywords[0]} x
         )
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
cucumber-3.1.0 lib/cucumber/gherkin/data_table_parser.rb
cucumber-3.0.2 lib/cucumber/gherkin/data_table_parser.rb
cucumber-3.0.1 lib/cucumber/gherkin/data_table_parser.rb
cucumber-3.0.0 lib/cucumber/gherkin/data_table_parser.rb
cucumber-3.0.0.pre.2 lib/cucumber/gherkin/data_table_parser.rb
cucumber-3.0.0.pre.1 lib/cucumber/gherkin/data_table_parser.rb