Class: CukeModeler::Outline

Inherits:
Model
  • Object
show all
Includes:
Described, Named, Parsed, Parsing, Sourceable, Stepped, Taggable
Defined in:
lib/cuke_modeler/models/outline.rb

Overview

A class modeling an individual outline in a Cucumber suite.

Instance Attribute Summary collapse

Attributes included from Taggable

#tags

Attributes included from Sourceable

#source_line

Attributes included from Stepped

#steps

Attributes included from Described

#description

Attributes included from Named

#name

Attributes included from Parsed

#parsing_data

Attributes included from Nested

#parent_model

Instance Method Summary collapse

Methods included from Taggable

#all_tags, #applied_tags

Methods included from Parsing

dialects, parse_text

Methods included from Containing

#each_descendant, #each_model

Methods included from Nested

#get_ancestor

Constructor Details

#initialize(source_text = nil) ⇒ Outline

Creates a new Outline object and, if source_text is provided, populates the object.



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/cuke_modeler/models/outline.rb', line 25

def initialize(source_text = nil)
  @steps = []
  @tags = []
  @examples = []

  super(source_text)

  if source_text
    parsed_outline_data = parse_source(source_text)
    populate_outline(self, parsed_outline_data)
  end
end

Instance Attribute Details

#examplesObject

The Example objects contained by the Outline



20
21
22
# File 'lib/cuke_modeler/models/outline.rb', line 20

def examples
  @examples
end

#keywordObject

The outline’s keyword



17
18
19
# File 'lib/cuke_modeler/models/outline.rb', line 17

def keyword
  @keyword
end

Instance Method Details

#==(other_model) ⇒ Object

Returns true if the two models have equivalent steps and false otherwise.



39
40
41
42
43
# File 'lib/cuke_modeler/models/outline.rb', line 39

def ==(other_model)
  return false unless other_model.respond_to?(:steps)

  steps == other_model.steps
end

#childrenObject

Returns the model objects that belong to this model.



46
47
48
# File 'lib/cuke_modeler/models/outline.rb', line 46

def children
  examples + steps + tags
end

#to_sObject

Returns a string representation of this model. For an outline model, this will be Gherkin text that is equivalent to the outline being modeled.



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

def to_s
  text = ''

  text << tag_output_string + "\n" unless tags.empty?
  text << "#{@keyword}:#{name_output_string}"
  text << "\n" + description_output_string unless (description.nil? || description.empty?)
  text << "\n" unless (steps.empty? || description.nil? || description.empty?)
  text << "\n" + steps_output_string unless steps.empty?
  text << "\n\n" + examples_output_string unless examples.empty?

  text
end