Module: TireSwing::NodeDefinition::NodeFilters

Defined in:
lib/tire_swing/node_definition.rb

Class Method Summary collapse

Class Method Details

.filter(node, kind, recursive) ⇒ Object



176
177
178
179
180
181
182
183
184
185
186
# File 'lib/tire_swing/node_definition.rb', line 176

def self.filter(node, kind, recursive)
  nodes = []
  children = node.respond_to?(:elements) ? (node.elements || []) : []
  if recursive
    nodes << node if node.respond_to?(:node_to_build) && node.node_to_build == kind
    children.each { |child| nodes.push *filter(child, kind, true) }
  else
    nodes = ([node] + children).select { |n| n.respond_to?(:node_to_build) && n.node_to_build == kind }
  end
  nodes
end