Module: CukeModeler::Parsing

Included in:
Background, Cell, Comment, DocString, Example, Outline, Row, Rule, Scenario, Step, Table, Tag
Defined in:
lib/cuke_modeler/parsing.rb

Overview

A module providing source text parsing functionality.

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.dialectObject

The dialect that will be used to parse snippets of Gherkin text


39
40
41
# File 'lib/cuke_modeler/parsing.rb', line 39

def dialect
  @dialect || 'en'
end

Class Method Details

.dialectsObject

The dialects currently known by the gherkin gem


44
45
46
# File 'lib/cuke_modeler/parsing.rb', line 44

def dialects
  @dialects ||= Gherkin::DIALECTS
end

.parse_text(source_text, filename = 'cuke_modeler_fake_file.feature') ⇒ Object

Parses the Cucumber feature given in source_text and returns a hash representation of its logical structure. This is a standardized AST that should remain consistent across different versions of `cucumber-gherkin`


51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/cuke_modeler/parsing.rb', line 51

def parse_text(source_text, filename = 'cuke_modeler_fake_file.feature')
  unless source_text.is_a?(String)
    raise(ArgumentError, "Text to parse must be a String but got #{source_text.class}")
  end

  begin
    parsed_result = parsing_method(source_text.encode('UTF-8'), filename)
  rescue => e
    raise(ArgumentError, "Error encountered while parsing '#{filename}'\n#{e.class} - #{e.message}")
  end

  adapter_class.new.adapt(parsed_result)
end