Sha256: c6cd8cb2486e59057a411e7ab2661018058f4be30e5f699afe41ac840f1e863e

Contents?: true

Size: 847 Bytes

Versions: 5

Compression:

Stored size: 847 Bytes

Contents

module SpecTracker
  module SpecParser
    class GherkinParser < BaseParser
      def initialize
        @language_parser = Gherkin::Parser.new
      end

      private

      def spec_file_extension
        '.feature'
      end

      # FIXME: handle large files
      def parse_single(spec_file)
        file_content = File.read(spec_file)
        parse_result = @language_parser.parse(file_content)
        parse_result[:feature][:children].select { |child| child[:type].downcase == :scenario }.map do |scenario|
          scenario_id = scenario[:name].slice(SpecTracker.configuration.scenario_id_regex, 1)
          next if scenario_id.nil?
          scenario_name = scenario[:name].gsub(SpecTracker.configuration.scenario_id_regex, '').strip
          Scenario.new(id: scenario_id, name: scenario_name)
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
spec_tracker-1.2.4 lib/spec_tracker/spec_parser/gherkin_parser.rb
spec_tracker-1.2.3 lib/spec_tracker/spec_parser/gherkin_parser.rb
spec_tracker-1.2.2 lib/spec_tracker/spec_parser/gherkin_parser.rb
spec_tracker-1.2.1 lib/spec_tracker/spec_parser/gherkin_parser.rb
spec_tracker-1.2.0 lib/spec_tracker/spec_parser/gherkin_parser.rb