class HTMLDOMDiff::DeltaTreeBuilder
Attributes
ldoc[R]
rdoc[R]
Public Class Methods
new(ldoc, rdoc)
click to toggle source
# File lib/html-dom-diff/delta_tree_builder.rb, line 4 def initialize(ldoc, rdoc) @ldoc = ldoc @rdoc = rdoc @weights = {} @forward = {} @backward = {} end
Public Instance Methods
add_weight(element, weight)
click to toggle source
# File lib/html-dom-diff/delta_tree_builder.rb, line 20 def add_weight(element, weight) @weights[element] = weight end
left_match(lnode)
click to toggle source
# File lib/html-dom-diff/delta_tree_builder.rb, line 37 def left_match(lnode) @forward[lnode] end
left_matched?(lnode)
click to toggle source
# File lib/html-dom-diff/delta_tree_builder.rb, line 41 def left_matched?(lnode) @forward.has_key?(lnode) end
left_matches?(lnode, rnode)
click to toggle source
# File lib/html-dom-diff/delta_tree_builder.rb, line 33 def left_matches?(lnode, rnode) @forward[lnode] == rnode end
match(left, right)
click to toggle source
# File lib/html-dom-diff/delta_tree_builder.rb, line 28 def match(left, right) @forward[left] = right @backward[right] = left end
right_matched?(rnode)
click to toggle source
# File lib/html-dom-diff/delta_tree_builder.rb, line 45 def right_matched?(rnode) @backward.has_key?(rnode) end
root()
click to toggle source
# File lib/html-dom-diff/delta_tree_builder.rb, line 12 def root wrap @rdoc end
total_weight()
click to toggle source
# File lib/html-dom-diff/delta_tree_builder.rb, line 16 def total_weight @weights[ldoc].to_f + @weights[rdoc].to_f end
weight(element)
click to toggle source
# File lib/html-dom-diff/delta_tree_builder.rb, line 24 def weight(element) @weights[element] end
Private Instance Methods
reverse_wrap(lnode, parent)
click to toggle source
# File lib/html-dom-diff/delta_tree_builder.rb, line 67 def reverse_wrap(lnode, parent) return if @forward[lnode] result = Node.new nil, lnode, @weights[lnode] lnode.children.each { |c| reverse_wrap c, result } parent.add_child result end
wrap(rnode, parent=nil)
click to toggle source
# File lib/html-dom-diff/delta_tree_builder.rb, line 51 def wrap(rnode, parent=nil) result = Node.new rnode, @backward[rnode], @weights[rnode], parent rnode.children.each do |child| wrap child, result end if parent parent.add_child result end if @backward[rnode] @backward[rnode].children.each do |child| reverse_wrap(child, result) end end result end