Class: ActionText::PlainTextConversion::BottomUpReducer
Do not use. This class is for internal use only.
Relationships & Source Files | |
Inherits: | Object |
Defined in: | actiontext/lib/action_text/plain_text_conversion.rb |
Class Method Summary
- .new(node) ⇒ BottomUpReducer constructor
Instance Method Summary
Constructor Details
.new(node) ⇒ BottomUpReducer
# File 'actiontext/lib/action_text/plain_text_conversion.rb', line 127
def initialize(node) @node = node @values = {} end
Instance Method Details
#reduce(&block)
[ GitHub ]# File 'actiontext/lib/action_text/plain_text_conversion.rb', line 132
def reduce(&block) traverse_bottom_up(@node) do |n| child_values = @values.values_at(*n.children) @values[n] = block.call(n, child_values) end @values[@node] end
#traverse_bottom_up(node, &block) (private)
[ GitHub ]# File 'actiontext/lib/action_text/plain_text_conversion.rb', line 141
def traverse_bottom_up(node, &block) call_stack, processing_stack = [ node ], [] until call_stack.empty? node = call_stack.pop processing_stack.push(node) call_stack.concat node.children end processing_stack.reverse_each(&block) end