class Glimmer::Specification::Element
Attributes
args[R]
block[R]
keyword[R]
parent[R]
title[RW]
Public Class Methods
element_class(keyword)
click to toggle source
# File lib/glimmer/specification/element.rb, line 30 def element_class(keyword) const_get(element_class_name(keyword)) end
element_class_name(keyword)
click to toggle source
# File lib/glimmer/specification/element.rb, line 34 def element_class_name(keyword) keyword.to_s.camelcase(:upper).to_sym end
element_exist?(keyword)
click to toggle source
# File lib/glimmer/specification/element.rb, line 26 def element_exist?(keyword) constants.include?(element_class_name(keyword)) && element_class(keyword).respond_to?(:new) end
new(parent, keyword, *args, &block)
click to toggle source
# File lib/glimmer/specification/element.rb, line 42 def initialize(parent, keyword, *args, &block) @parent = parent @keyword = keyword @args = args @title = @args.first @block = block @children = children @parent&.post_initialize_child(self) post_add_content if @block.nil? end
Public Instance Methods
ancestors()
click to toggle source
ancestors including self ordered from closest to farthest
# File lib/glimmer/specification/element.rb, line 77 def ancestors if @ancestors.nil? @ancestors = [self] current = self while current.parent current = current.parent @ancestors << current end end @ancestors end
children()
click to toggle source
# File lib/glimmer/specification/element.rb, line 53 def children @children ||= [] end
content(&block)
click to toggle source
Enables re-opening content and adding new shapes
# File lib/glimmer/specification/element.rb, line 99 def content(&block) Glimmer::DSL::Engine.add_content(self, Glimmer::DSL::Specification::ElementExpression.new, @keyword, &block) end
content_added?()
click to toggle source
# File lib/glimmer/specification/element.rb, line 61 def content_added? @content_added end
executable?()
click to toggle source
subclasses may override (e.g. Scenario
)
# File lib/glimmer/specification/element.rb, line 66 def executable? !!@executable end
post_add_content()
click to toggle source
# File lib/glimmer/specification/element.rb, line 93 def post_add_content # No Op (subclasses may override to do something at the closing of the element) @content_added = true end
post_initialize_child(child)
click to toggle source
# File lib/glimmer/specification/element.rb, line 89 def post_initialize_child(child) children << child end
run()
click to toggle source
runs children by default. subclasses may override.
# File lib/glimmer/specification/element.rb, line 104 def run children.each(&:run) @verified = children.all?(&:verified?) if @verified puts Colours::GREEN + "VERIFIED: #{to_s}" else puts Colours::RED + "NOT VERIFIED: #{to_s}" end end
scenarios()
click to toggle source
# File lib/glimmer/specification/element.rb, line 70 def scenarios children.map do |child| child.is_a?(Scenario) ? child : child.scenarios end.flatten end
to_s()
click to toggle source
# File lib/glimmer/specification/element.rb, line 114 def to_s ancestors.reverse.map(&:title).join(' - ') end
verified?()
click to toggle source
# File lib/glimmer/specification/element.rb, line 57 def verified? @verified end