From 6d15558f727d8ea47db895e32ae9447685122cd2 Mon Sep 17 00:00:00 2001 From: tiendo1011 Date: Mon, 20 Dec 2021 13:42:48 +0700 Subject: Use element directly instead of accessing it from the index We have ai, bj to keep track of which index we're in for both a and b, so keeping i is not needed Without it, the logic will be simpler --- lib/diff/lcs.rb | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/lib/diff/lcs.rb b/lib/diff/lcs.rb index 43d3ce1..f102bb1 100644 --- a/lib/diff/lcs.rb +++ b/lib/diff/lcs.rb @@ -292,15 +292,13 @@ class << Diff::LCS b_size = seq2.size ai = bj = 0 - (0...matches.size).each do |i| - b_line = matches[i] - - ax = string ? seq1[i, 1] : seq1[i] + matches.each do |b_line| + ax = string ? seq1[ai, 1] : seq1[ai] bx = string ? seq2[bj, 1] : seq2[bj] if b_line.nil? unless ax.nil? or (string and ax.empty?) - event = Diff::LCS::ContextChange.new('-', i, ax, bj, bx) + event = Diff::LCS::ContextChange.new('-', ai, ax, bj, bx) event = yield event if block_given? callbacks.discard_a(event) end @@ -309,20 +307,19 @@ class << Diff::LCS break unless bj < b_line bx = string ? seq2[bj, 1] : seq2[bj] - event = Diff::LCS::ContextChange.new('+', i, ax, bj, bx) + event = Diff::LCS::ContextChange.new('+', ai, ax, bj, bx) event = yield event if block_given? callbacks.discard_b(event) bj += 1 end bx = string ? seq2[bj, 1] : seq2[bj] - event = Diff::LCS::ContextChange.new('=', i, ax, bj, bx) + event = Diff::LCS::ContextChange.new('=', ai, ax, bj, bx) event = yield event if block_given? callbacks.match(event) bj += 1 end - ai = i + ai += 1 end - ai += 1 # The last entry (if any) processed was a match. +ai+ and +bj+ point just # past the last matching lines in their sequences. -- cgit v1.2.1