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

Inherits:
Object
  • 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

#attributes, #comments, #file_colon_line, #line, #location, #match_locations?, #multiline_arg, #tags

Constructor Details

#initialize(string, content_type, location) ⇒ DocString

Returns a new instance of DocString.



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

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

Instance Attribute Details

#contentObject (readonly)

Returns the value of attribute content.



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

def content
  @content
end

#content_typeObject (readonly)

Returns the value of attribute content_type.



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

def content_type
  @content_type
end

#fileObject

Returns the value of attribute file.



24
25
26
# File 'lib/cucumber/core/ast/doc_string.rb', line 24

def file
  @file
end

Instance Method Details

#==(other) ⇒ Object

Raises:

  • (ArgumentError)


60
61
62
63
64
65
66
67
68
# File 'lib/cucumber/core/ast/doc_string.rb', line 60

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
  raise ArgumentError, "Can't compare a #{self.class.name} with a #{other.class.name}"
end

#encodingObject



34
35
36
# File 'lib/cucumber/core/ast/doc_string.rb', line 34

def encoding
  @content.encoding
end

#gsub(*args) ⇒ Object



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

def gsub(*args)
  @content.gsub(*args)
end

#mapObject

Raises:

  • (ArgumentError)


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

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

#to_sObject



42
43
44
# File 'lib/cucumber/core/ast/doc_string.rb', line 42

def to_s
  to_str
end

#to_step_definition_argObject



56
57
58
# File 'lib/cucumber/core/ast/doc_string.rb', line 56

def to_step_definition_arg
  self
end

#to_strObject



38
39
40
# File 'lib/cucumber/core/ast/doc_string.rb', line 38

def to_str
  @content
end