class Bade::Optimizer
Public Class Methods
new(root_node)
click to toggle source
@param [Bade::AST::Node] root_node
# File lib/bade/optimizer.rb, line 8 def initialize(root_node) @root_node = root_node @new_root = Marshal.load(Marshal.dump(root_node)) end
Public Instance Methods
iterate(node) { |subnode, previous, node| ... }
click to toggle source
@param [Bade::AST::Node] node
# File lib/bade/optimizer.rb, line 45 def iterate(node) previous = nil node.children.delete_if do |subnode| returned = yield subnode, previous, node previous = subnode unless returned returned end end
optimize()
click to toggle source
@return [Bade::Node]
# File lib/bade/optimizer.rb, line 16 def optimize optimize_static_texts @root_node end
optimize_static_texts()
click to toggle source
# File lib/bade/optimizer.rb, line 22 def optimize_static_texts traverse(@root_node) do |tr_node| iterate(tr_node) do |node, previous_node, _parent| if previous_node && previous_node.type == :static_text && node.type == :static_text previous_node.value += node.value true end end end end
traverse(node) { |node| ... }
click to toggle source
@param [Bade::AST::Node] node
# File lib/bade/optimizer.rb, line 35 def traverse(node, &block) yield node node.children.each do |subnode| traverse(subnode, &block) end end