Method: I18n::Processes::Data::Tree::Traversal#select_nodes!
- Defined in:
- lib/i18n/processes/data/tree/traversal.rb
#select_nodes!(&block) ⇒ Siblings
Select the nodes for which the block returns true. Pre-order traversal.
103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/i18n/processes/data/tree/traversal.rb', line 103 def select_nodes!(&block) to_remove = [] each do |node| if block.yield(node) node.children.select_nodes!(&block) if node.children else # removing during each is unsafe to_remove << node end end to_remove.each { |node| remove! node } self end |