Module: Cucumber::Core::Ast::MultilineArgument

Extended by:
Gherkin::Rubify
Defined in:
lib/cucumber/core/ast/multiline_argument.rb

Class Method Summary collapse

Class Method Details

.from(argument, parent_location) ⇒ Object

TODO: move this up to the front-end



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/cucumber/core/ast/multiline_argument.rb', line 12

def from(argument, parent_location)
  return EmptyMultilineArgument.new unless argument
  return argument if argument.respond_to?(:to_step_definition_arg)

  argument = rubify(argument)
  case argument
  when String
    Ast::DocString.new(argument, 'text/plain', parent_location)
  when ::Gherkin::Formatter::Model::DocString
    Ast::DocString.new(argument.value, argument.content_type, parent_location.on_line(argument.line_range))
  when Array
    location = parent_location.on_line(argument.first.line..argument.last.line)
    Ast::DataTable.new(argument.map{|row| row.cells}, location)
  else
    raise ArgumentError, "Don't know how to convert #{argument.inspect} into a MultilineArgument"
  end
end