Sha256: 503b9aec8e78e52840f9d9c23afc881e5266f7c563fe633b54c320cb31983030

Contents?: true

Size: 1.11 KB

Versions: 15

Compression:

Stored size: 1.11 KB

Contents

# frozen_string_literal: true

require 'gherkin'
require 'gherkin/dialect'

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

      def parse(text)
        gherkin_document = nil
        messages = ::Gherkin.from_source('dummy', feature_header + text, gherkin_options)

        messages.each do |message|
          gherkin_document = message.gherkin_document.to_hash unless message.gherkin_document.nil?
        end

        return if gherkin_document.nil?
        gherkin_document[:feature][:children][0][:scenario][:steps][0][:data_table][:rows].each do |row|
          @builder.row(row[:cells].map { |cell| cell[:value] })
        end
      end

      def gherkin_options
        {
          include_source: false,
          include_gherkin_document: true,
          include_pickles: false
        }
      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

15 entries across 15 versions & 1 rubygems

Version Path
cucumber-6.1.0 lib/cucumber/gherkin/data_table_parser.rb
cucumber-6.0.0 lib/cucumber/gherkin/data_table_parser.rb
cucumber-5.3.0 lib/cucumber/gherkin/data_table_parser.rb
cucumber-5.2.0 lib/cucumber/gherkin/data_table_parser.rb
cucumber-5.1.3 lib/cucumber/gherkin/data_table_parser.rb
cucumber-5.1.2 lib/cucumber/gherkin/data_table_parser.rb
cucumber-5.1.1 lib/cucumber/gherkin/data_table_parser.rb
cucumber-5.1.0 lib/cucumber/gherkin/data_table_parser.rb
cucumber-5.0.0 lib/cucumber/gherkin/data_table_parser.rb
cucumber-4.1.0 lib/cucumber/gherkin/data_table_parser.rb
cucumber-4.0.1 lib/cucumber/gherkin/data_table_parser.rb
cucumber-4.0.0 lib/cucumber/gherkin/data_table_parser.rb
cucumber-4.0.0.rc.6 lib/cucumber/gherkin/data_table_parser.rb
cucumber-4.0.0.rc.5 lib/cucumber/gherkin/data_table_parser.rb
cucumber-4.0.0.rc.4 lib/cucumber/gherkin/data_table_parser.rb