Class: Cucumber::Core::Ast::DocString

Inherits:
SimpleDelegator
  • Object
show all
Includes:
DescribesItself, HasLocation
Defined in:
lib/cucumber/core/ast/doc_string.rb

Overview

Represents an inline argument in a step. Example:

Given the message
  """
  I like
  Cucumber sandwich
  """

The text between the pair of """ is stored inside a DocString, which is yielded to the StepDefinition block as the last argument.

The StepDefinition can then access the String via the #to_s method. In the example above, that would return: "I like\nCucumber sandwich"

Note how the indentation from the source is stripped away.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from DescribesItself

#describe_to

Methods included from HasLocation

#all_locations, #attributes, #comments, #file, #file_colon_line, #line, #location, #multiline_arg, #tags

Constructor Details

#initialize(content, content_type, location) ⇒ DocString

Returns a new instance of DocString.



29
30
31
32
33
34
# File 'lib/cucumber/core/ast/doc_string.rb', line 29

def initialize(content, content_type, location)
  @content = content
  @content_type = content_type
  @location = location
  super @content
end

Instance Attribute Details

#contentObject (readonly)

Returns the value of attribute content.



27
28
29
# File 'lib/cucumber/core/ast/doc_string.rb', line 27

def content
  @content
end

#content_typeObject (readonly)

Returns the value of attribute content_type.



27
28
29
# File 'lib/cucumber/core/ast/doc_string.rb', line 27

def content_type
  @content_type
end

Instance Method Details

#==(other) ⇒ Object



54
55
56
57
58
59
60
61
62
# File 'lib/cucumber/core/ast/doc_string.rb', line 54

def ==(other)
  if other.respond_to?(:content_type)
    return false unless content_type == other.content_type
  end
  if other.respond_to?(:to_str)
    return content == other.to_str
  end
  false
end

#data_table?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/cucumber/core/ast/doc_string.rb', line 36

def data_table?
  false
end

#doc_string?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/cucumber/core/ast/doc_string.rb', line 40

def doc_string?
  true
end

#inspectObject



64
65
66
67
68
69
70
71
# File 'lib/cucumber/core/ast/doc_string.rb', line 64

def inspect
  [
    %{#<#{self.class} (#{location})},
    %{  """#{content_type}},
    %{  #{@content}},
    %{  """>}
  ].join("\n")
end

#mapObject

Raises:

  • (ArgumentError)


44
45
46
47
48
# File 'lib/cucumber/core/ast/doc_string.rb', line 44

def map
  raise ArgumentError, "No block given" unless block_given?
  new_content = yield content
  self.class.new(new_content, content_type, location)
end

#to_step_definition_argObject



50
51
52
# File 'lib/cucumber/core/ast/doc_string.rb', line 50

def to_step_definition_arg
  self
end