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