Class: DiDiffer::Differ
- Inherits:
-
Object
- Object
- DiDiffer::Differ
- Defined in:
- lib/di_differ.rb
Instance Attribute Summary collapse
-
#diff_arr ⇒ Object
readonly
Returns the value of attribute diff_arr.
Instance Method Summary collapse
- #common_subsequence ⇒ Object
- #diff(formatter: TableFormatter.new) ⇒ Object
-
#initialize(file1, file2) ⇒ Differ
constructor
A new instance of Differ.
Constructor Details
#initialize(file1, file2) ⇒ Differ
Returns a new instance of Differ.
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/di_differ.rb', line 8 def initialize(file1, file2) raise "File #{file1} not found" unless File.exists?(file1) raise "File #{file2} not found" unless File.exists?(file2) @s1 = File.readlines(file1) @s2 = File.readlines(file2) clean_data @matrix = Array.new(@s1.size + 1){ Array.new(@s2.size + 1) { 0 } } @diff_arr = [] end |
Instance Attribute Details
#diff_arr ⇒ Object (readonly)
Returns the value of attribute diff_arr.
6 7 8 |
# File 'lib/di_differ.rb', line 6 def diff_arr @diff_arr end |
Instance Method Details
#common_subsequence ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/di_differ.rb', line 28 def common_subsequence seq = [] i = @s1.size j = @s2.size while i >= 0 && j >= 0 do if @s1[i-1] == @s2[j-1] seq << @s1[i-1] i -= 1 j -= 1 elsif @matrix[i - 1][j] >= @matrix[i][j - 1] i -= 1 else j -= 1 end end seq.reverse end |
#diff(formatter: TableFormatter.new) ⇒ Object
21 22 23 24 25 26 |
# File 'lib/di_differ.rb', line 21 def diff(formatter: TableFormatter.new) subsequence_matrix build_diff_arr compaq formatter.output(@diff_arr) end |