module Kenma::Iteration
Constants
- KENMA_ITERATION_MACRO_EMPTY_NODE
Public Instance Methods
convert_node(node, parent = nil, &block)
click to toggle source
# File lib/kenma/iteration.rb, line 28 def convert_node(node, parent = nil, &block) return node unless node.node? children = node.children converted_children = children .map { |child| convert_node(child, node) { |node, parent| block.call(node, parent) || KENMA_ITERATION_MACRO_EMPTY_NODE } } .reject { |it| KENMA_ITERATION_MACRO_EMPTY_NODE == it } if converted_children == children node else [node.type, converted_children] end.then { |node| block.call(node, parent) } end
each_node(node, &block)
click to toggle source
# File lib/kenma/iteration.rb, line 14 def each_node(node, &block) return Enumerator.new { |y| each_node(node) { |node| y << node } } unless block return node unless node.node? node.children.map { |node| each_node(node) { |child| block.call(child, node) } } block.call(node) if block end
find_convert_node(node, pat, &block)
click to toggle source
# File lib/kenma/iteration.rb, line 43 def find_convert_node(node, pat, &block) convert_node(node) { |node| if result = pat === node block.call(node, **result) else node end } end