class Qwik::HTreeDiffHtmlGenerator

Public Class Methods

new(s1, s2) click to toggle source
# File vendor/qwik/lib/qwik/htree-diff.rb, line 18
def initialize(s1, s2)
  @s1 = s1.gsub(/\r/, "")
  @s2 = s2.gsub(/\r/, "")
end

Public Instance Methods

to_txt() click to toggle source
# File vendor/qwik/lib/qwik/htree-diff.rb, line 23
def to_txt
  a1 = @s1.split("\n").collect! {|s| "#{s}\n"}
  a2 = @s2.split("\n").collect! {|s| "#{s}\n"}
  Diff.diff(a1, a2) 
end
to_xml() click to toggle source
# File vendor/qwik/lib/qwik/htree-diff.rb, line 29
def to_xml
  g = HTree::Generator.new
  src = @s1.split("\n").collect {|s| "#{s.escapeHTML}" }
  si = 0
  di = 0
  e = []
  to_txt.each {|action, position, elements|
    case action
    when :-
      while si < position
        e << HTree::Text.new(src[si])
        e << g.br
        si += 1
        di += 1
      end
      si += elements.length
      elements.each {|l|
        e << g.del{l.chomp}
        e << g.br
      }
    when :+
      while di < position
        e << HTree::Text.new(src[si])
        e << g.br
        si += 1
        di += 1
      end
      di += elements.length
      elements.each {|l|
        e << g.ins{l.chomp}
        e << g.br
      }
    end
  }
  while si < src.length
    e << HTree::Text.new(src[si])
    e << g.br
    si += 1
  end
  e
end