123456789_123456789_123456789_123456789_123456789_

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

Instance Method Summary

Constructor Details

.new(node) ⇒ BottomUpReducer

[ GitHub ]

  
# 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