Method: Teapot::Merge.combine

Defined in:
lib/teapot/merge.rb

.combine(old_text, new_text) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/teapot/merge.rb', line 26

def self.combine(old_text, new_text)
	lcs = lcs(old_text, new_text)
	changes = []
	
	n = 0; o = 0; l = 0
	while o < old_text.size and n < new_text.size and l < lcs.size
		if !similar(old_text[o], lcs[l])
			changes << Difference.new(:old, old_text[o])
			o+=1
		elsif !similar(new_text[n], lcs[l])
			changes << Difference.new(:new, new_text[n])
			n+=1
		else
			changes << Difference.new(:both, lcs[l])
			o+=1; n+=1; l+=1
		end
	end

	changes.map do |change|
		change.value
	end
end