You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

steps_parser.rb 1.0 kB

2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142
  1. # frozen_string_literal: true
  2. require 'gherkin'
  3. require 'gherkin/dialect'
  4. module Cucumber
  5. module Gherkin
  6. class StepsParser
  7. def initialize(builder, language)
  8. @builder = builder
  9. @language = language
  10. end
  11. def parse(text)
  12. dialect = ::Gherkin::Dialect.for(@language)
  13. gherkin_document = nil
  14. messages = ::Gherkin.from_source('dummy', feature_header(dialect) + text, gherkin_options)
  15. messages.each do |message|
  16. gherkin_document = message.gherkin_document.to_h unless message.gherkin_document.nil?
  17. end
  18. @builder.steps(gherkin_document[:feature][:children][0][:scenario][:steps])
  19. end
  20. def gherkin_options
  21. {
  22. default_dialect: @language,
  23. include_source: false,
  24. include_gherkin_document: true,
  25. include_pickles: false
  26. }
  27. end
  28. def feature_header(dialect)
  29. %(#{dialect.feature_keywords[0]}:
  30. #{dialect.scenario_keywords[0]}:
  31. )
  32. end
  33. end
  34. end
  35. end

No Description

Contributors (1)