class DocDiff::Diff::Subsequence
Public Class Methods
new()
click to toggle source
# File lib/docdiff/diff/subsequence.rb, line 4 def initialize @list = [] end
Public Instance Methods
add(i, j, len=1)
click to toggle source
# File lib/docdiff/diff/subsequence.rb, line 8 def add(i, j, len=1) raise ArgumentError.new("non-positive length: #{len}") if len <= 0 if @list.empty? @list << [i, j, len] return end i0, j0, len0 = @list.last if i0 + len0 == i && j0 + len0 == j @list.last[2] += len return end if i0 + len0 > i || j0 + len0 > j raise ArgumentError.new("additional common sequence overlapped.") end @list << [i, j, len] end
each(&block)
click to toggle source
# File lib/docdiff/diff/subsequence.rb, line 30 def each(&block) @list.each(&block) end
length()
click to toggle source
# File lib/docdiff/diff/subsequence.rb, line 34 def length len = 0 each {|i, j, l| len += l} return len end