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 |