Class: WCC::InLineDiffer

Inherits:
Object
  • Object
show all
Defined in:
lib/wcc/diff.rb

Overview

Calculates hilite based on per char side-by-side diff for two DiffItems.

Instance Method Summary collapse

Constructor Details

#initialize(a, b) ⇒ InLineDiffer

Returns a new instance of InLineDiffer.



159
160
161
162
163
164
# File 'lib/wcc/diff.rb', line 159

def initialize(a, b)
	@a = a
	@b = b
	@a.hilite = []
	@b.hilite = []
end

Instance Method Details

#change(e) ⇒ Object



185
186
187
188
# File 'lib/wcc/diff.rb', line 185

def change(e)
	@a.hilite << e.old_position if not @a.hilite.include?(e.old_position)
	@b.hilite << e.new_position if not @b.hilite.include?(e.new_position)
end

#compute_hiliteObject



166
167
168
169
170
171
# File 'lib/wcc/diff.rb', line 166

def compute_hilite
	#puts @a.text.chars.to_a.inspect
	#puts @b.text.chars.to_a.inspect
	# HACK: Diff::LCS with plain strings fails on Ruby 1.8 even with -Ku flag but not: <string>.chars.to_a
	Diff::LCS.traverse_balanced(@a.text.chars.to_a, @b.text.chars.to_a, self)
end

#discard_a(e) ⇒ Object



177
178
179
# File 'lib/wcc/diff.rb', line 177

def discard_a(e)
	@a.hilite << e.old_position if not @a.hilite.include?(e.old_position)
end

#discard_b(e) ⇒ Object



181
182
183
# File 'lib/wcc/diff.rb', line 181

def discard_b(e)
	@b.hilite << e.new_position if not @b.hilite.include?(e.new_position)
end

#match(e) ⇒ Object



173
174
175
# File 'lib/wcc/diff.rb', line 173

def match(e)
	# don't care
end