diff-lcs 1.5.0 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +518 -0
  3. data/CODE_OF_CONDUCT.md +128 -0
  4. data/CONTRIBUTING.md +71 -0
  5. data/CONTRIBUTORS.md +49 -0
  6. data/{License.md → LICENCE.md} +21 -20
  7. data/Manifest.txt +61 -5
  8. data/README.md +92 -0
  9. data/Rakefile +76 -82
  10. data/SECURITY.md +41 -0
  11. data/bin/htmldiff +4 -4
  12. data/docs/artistic.txt +1 -1
  13. data/lib/diff/lcs/array.rb +1 -1
  14. data/lib/diff/lcs/backports.rb +6 -2
  15. data/lib/diff/lcs/block.rb +4 -4
  16. data/lib/diff/lcs/callbacks.rb +9 -7
  17. data/lib/diff/lcs/change.rb +22 -22
  18. data/lib/diff/lcs/htmldiff.rb +26 -16
  19. data/lib/diff/lcs/hunk.rb +66 -45
  20. data/lib/diff/lcs/internals.rb +17 -17
  21. data/lib/diff/lcs/ldiff.rb +93 -75
  22. data/lib/diff/lcs/version.rb +7 -0
  23. data/lib/diff/lcs.rb +66 -63
  24. data/lib/diff-lcs.rb +1 -1
  25. data/mise.toml +5 -0
  26. data/spec/change_spec.rb +50 -50
  27. data/spec/diff_spec.rb +14 -14
  28. data/spec/fixtures/123_x +2 -0
  29. data/spec/fixtures/456_x +2 -0
  30. data/spec/fixtures/empty +0 -0
  31. data/spec/fixtures/file1.bin +0 -0
  32. data/spec/fixtures/file2.bin +0 -0
  33. data/spec/fixtures/four_lines +4 -0
  34. data/spec/fixtures/four_lines_with_missing_new_line +4 -0
  35. data/spec/fixtures/ldiff/diff.missing_new_line1-e +1 -0
  36. data/spec/fixtures/ldiff/diff.missing_new_line1-f +1 -0
  37. data/spec/fixtures/ldiff/diff.missing_new_line2-e +1 -0
  38. data/spec/fixtures/ldiff/diff.missing_new_line2-f +1 -0
  39. data/spec/fixtures/ldiff/error.diff.chef-e +2 -0
  40. data/spec/fixtures/ldiff/error.diff.chef-f +2 -0
  41. data/spec/fixtures/ldiff/error.diff.missing_new_line1-e +1 -0
  42. data/spec/fixtures/ldiff/error.diff.missing_new_line1-f +1 -0
  43. data/spec/fixtures/ldiff/error.diff.missing_new_line2-e +1 -0
  44. data/spec/fixtures/ldiff/error.diff.missing_new_line2-f +1 -0
  45. data/spec/fixtures/ldiff/output.diff.bin1 +0 -0
  46. data/spec/fixtures/ldiff/output.diff.bin1-c +0 -0
  47. data/spec/fixtures/ldiff/output.diff.bin1-e +0 -0
  48. data/spec/fixtures/ldiff/output.diff.bin1-f +0 -0
  49. data/spec/fixtures/ldiff/output.diff.bin1-u +0 -0
  50. data/spec/fixtures/ldiff/output.diff.bin2 +1 -0
  51. data/spec/fixtures/ldiff/output.diff.bin2-c +1 -0
  52. data/spec/fixtures/ldiff/output.diff.bin2-e +1 -0
  53. data/spec/fixtures/ldiff/output.diff.bin2-f +1 -0
  54. data/spec/fixtures/ldiff/output.diff.bin2-u +1 -0
  55. data/spec/fixtures/ldiff/output.diff.empty.vs.four_lines +5 -0
  56. data/spec/fixtures/ldiff/output.diff.empty.vs.four_lines-c +9 -0
  57. data/spec/fixtures/ldiff/output.diff.empty.vs.four_lines-e +6 -0
  58. data/spec/fixtures/ldiff/output.diff.empty.vs.four_lines-f +6 -0
  59. data/spec/fixtures/ldiff/output.diff.empty.vs.four_lines-u +7 -0
  60. data/spec/fixtures/ldiff/output.diff.four_lines.vs.empty +5 -0
  61. data/spec/fixtures/ldiff/output.diff.four_lines.vs.empty-c +9 -0
  62. data/spec/fixtures/ldiff/output.diff.four_lines.vs.empty-e +1 -0
  63. data/spec/fixtures/ldiff/output.diff.four_lines.vs.empty-f +1 -0
  64. data/spec/fixtures/ldiff/output.diff.four_lines.vs.empty-u +7 -0
  65. data/spec/fixtures/ldiff/output.diff.issue95_trailing_context +4 -0
  66. data/spec/fixtures/ldiff/output.diff.issue95_trailing_context-c +9 -0
  67. data/spec/fixtures/ldiff/output.diff.issue95_trailing_context-e +3 -0
  68. data/spec/fixtures/ldiff/output.diff.issue95_trailing_context-f +3 -0
  69. data/spec/fixtures/ldiff/output.diff.issue95_trailing_context-u +6 -0
  70. data/spec/fixtures/ldiff/output.diff.missing_new_line1 +5 -0
  71. data/spec/fixtures/ldiff/output.diff.missing_new_line1-c +14 -0
  72. data/spec/fixtures/ldiff/output.diff.missing_new_line1-e +0 -0
  73. data/spec/fixtures/ldiff/output.diff.missing_new_line1-f +0 -0
  74. data/spec/fixtures/ldiff/output.diff.missing_new_line1-u +9 -0
  75. data/spec/fixtures/ldiff/output.diff.missing_new_line2 +5 -0
  76. data/spec/fixtures/ldiff/output.diff.missing_new_line2-c +14 -0
  77. data/spec/fixtures/ldiff/output.diff.missing_new_line2-e +0 -0
  78. data/spec/fixtures/ldiff/output.diff.missing_new_line2-f +0 -0
  79. data/spec/fixtures/ldiff/output.diff.missing_new_line2-u +9 -0
  80. data/spec/hunk_spec.rb +20 -20
  81. data/spec/issues_spec.rb +76 -70
  82. data/spec/lcs_spec.rb +11 -11
  83. data/spec/ldiff_spec.rb +30 -17
  84. data/spec/patch_spec.rb +84 -84
  85. data/spec/sdiff_spec.rb +111 -109
  86. data/spec/spec_helper.rb +162 -160
  87. data/spec/traverse_balanced_spec.rb +191 -189
  88. data/spec/traverse_sequences_spec.rb +31 -31
  89. metadata +90 -61
  90. data/Code-of-Conduct.md +0 -74
  91. data/Contributing.md +0 -119
  92. data/History.md +0 -400
  93. data/README.rdoc +0 -84
data/spec/sdiff_spec.rb CHANGED
@@ -1,214 +1,216 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
- describe 'Diff::LCS.sdiff' do
5
+ describe "Diff::LCS.sdiff" do
6
6
  include Diff::LCS::SpecHelper::Matchers
7
7
 
8
- shared_examples 'compare sequences correctly' do
9
- it 'compares s1 -> s2 correctly' do
8
+ shared_examples "compare sequences correctly" do
9
+ it "compares s1 -> s2 correctly" do
10
10
  expect(Diff::LCS.sdiff(s1, s2)).to eq(context_diff(result))
11
11
  end
12
12
 
13
- it 'compares s2 -> s1 correctly' do
13
+ it "compares s2 -> s1 correctly" do
14
14
  expect(Diff::LCS.sdiff(s2, s1)).to eq(context_diff(reverse_sdiff(result)))
15
15
  end
16
16
  end
17
17
 
18
- describe 'using seq1 & seq2' do
18
+ describe "using seq1 & seq2" do
19
19
  let(:s1) { seq1 }
20
20
  let(:s2) { seq2 }
21
21
  let(:result) { correct_forward_sdiff }
22
22
 
23
- it_has_behavior 'compare sequences correctly'
23
+ it_has_behavior "compare sequences correctly"
24
24
  end
25
25
 
26
- describe 'using %w(abc def yyy xxx ghi jkl) & %w(abc dxf xxx ghi jkl)' do
27
- let(:s1) { %w(abc def yyy xxx ghi jkl) }
28
- let(:s2) { %w(abc dxf xxx ghi jkl) }
26
+ describe "using %w(abc def yyy xxx ghi jkl) & %w(abc dxf xxx ghi jkl)" do
27
+ let(:s1) { %w[abc def yyy xxx ghi jkl] }
28
+ let(:s2) { %w[abc dxf xxx ghi jkl] }
29
29
  let(:result) {
30
+ # standard:disable Layout/ExtraSpacing
30
31
  [
31
- ['=', [0, 'abc'], [0, 'abc']],
32
- ['!', [1, 'def'], [1, 'dxf']],
33
- ['-', [2, 'yyy'], [2, nil]],
34
- ['=', [3, 'xxx'], [2, 'xxx']],
35
- ['=', [4, 'ghi'], [3, 'ghi']],
36
- ['=', [5, 'jkl'], [4, 'jkl']]
32
+ ["=", [0, "abc"], [0, "abc"]],
33
+ ["!", [1, "def"], [1, "dxf"]],
34
+ ["-", [2, "yyy"], [2, nil]],
35
+ ["=", [3, "xxx"], [2, "xxx"]],
36
+ ["=", [4, "ghi"], [3, "ghi"]],
37
+ ["=", [5, "jkl"], [4, "jkl"]]
37
38
  ]
39
+ # standard:enable Layout/ExtraSpacing
38
40
  }
39
41
 
40
- it_has_behavior 'compare sequences correctly'
42
+ it_has_behavior "compare sequences correctly"
41
43
  end
42
44
 
43
- describe 'using %w(a b c d e) & %w(a e)' do
44
- let(:s1) { %w(a b c d e) }
45
- let(:s2) { %w(a e) }
45
+ describe "using %w(a b c d e) & %w(a e)" do
46
+ let(:s1) { %w[a b c d e] }
47
+ let(:s2) { %w[a e] }
46
48
  let(:result) {
47
49
  [
48
- ['=', [0, 'a'], [0, 'a']],
49
- ['-', [1, 'b'], [1, nil]],
50
- ['-', [2, 'c'], [1, nil]],
51
- ['-', [3, 'd'], [1, nil]],
52
- ['=', [4, 'e'], [1, 'e']]
50
+ ["=", [0, "a"], [0, "a"]],
51
+ ["-", [1, "b"], [1, nil]],
52
+ ["-", [2, "c"], [1, nil]],
53
+ ["-", [3, "d"], [1, nil]],
54
+ ["=", [4, "e"], [1, "e"]]
53
55
  ]
54
56
  }
55
57
 
56
- it_has_behavior 'compare sequences correctly'
58
+ it_has_behavior "compare sequences correctly"
57
59
  end
58
60
 
59
- describe 'using %w(a e) & %w(a b c d e)' do
60
- let(:s1) { %w(a e) }
61
- let(:s2) { %w(a b c d e) }
61
+ describe "using %w(a e) & %w(a b c d e)" do
62
+ let(:s1) { %w[a e] }
63
+ let(:s2) { %w[a b c d e] }
62
64
  let(:result) {
63
65
  [
64
- ['=', [0, 'a'], [0, 'a']],
65
- ['+', [1, nil], [1, 'b']],
66
- ['+', [1, nil], [2, 'c']],
67
- ['+', [1, nil], [3, 'd']],
68
- ['=', [1, 'e'], [4, 'e']]
66
+ ["=", [0, "a"], [0, "a"]],
67
+ ["+", [1, nil], [1, "b"]],
68
+ ["+", [1, nil], [2, "c"]],
69
+ ["+", [1, nil], [3, "d"]],
70
+ ["=", [1, "e"], [4, "e"]]
69
71
  ]
70
72
  }
71
73
 
72
- it_has_behavior 'compare sequences correctly'
74
+ it_has_behavior "compare sequences correctly"
73
75
  end
74
76
 
75
- describe 'using %w(v x a e) & %w(w y a b c d e)' do
76
- let(:s1) { %w(v x a e) }
77
- let(:s2) { %w(w y a b c d e) }
77
+ describe "using %w(v x a e) & %w(w y a b c d e)" do
78
+ let(:s1) { %w[v x a e] }
79
+ let(:s2) { %w[w y a b c d e] }
78
80
  let(:result) {
79
81
  [
80
- ['!', [0, 'v'], [0, 'w']],
81
- ['!', [1, 'x'], [1, 'y']],
82
- ['=', [2, 'a'], [2, 'a']],
83
- ['+', [3, nil], [3, 'b']],
84
- ['+', [3, nil], [4, 'c']],
85
- ['+', [3, nil], [5, 'd']],
86
- ['=', [3, 'e'], [6, 'e']]
82
+ ["!", [0, "v"], [0, "w"]],
83
+ ["!", [1, "x"], [1, "y"]],
84
+ ["=", [2, "a"], [2, "a"]],
85
+ ["+", [3, nil], [3, "b"]],
86
+ ["+", [3, nil], [4, "c"]],
87
+ ["+", [3, nil], [5, "d"]],
88
+ ["=", [3, "e"], [6, "e"]]
87
89
  ]
88
90
  }
89
91
 
90
- it_has_behavior 'compare sequences correctly'
92
+ it_has_behavior "compare sequences correctly"
91
93
  end
92
94
 
93
- describe 'using %w(x a e) & %w(a b c d e)' do
94
- let(:s1) { %w(x a e) }
95
- let(:s2) { %w(a b c d e) }
95
+ describe "using %w(x a e) & %w(a b c d e)" do
96
+ let(:s1) { %w[x a e] }
97
+ let(:s2) { %w[a b c d e] }
96
98
  let(:result) {
97
99
  [
98
- ['-', [0, 'x'], [0, nil]],
99
- ['=', [1, 'a'], [0, 'a']],
100
- ['+', [2, nil], [1, 'b']],
101
- ['+', [2, nil], [2, 'c']],
102
- ['+', [2, nil], [3, 'd']],
103
- ['=', [2, 'e'], [4, 'e']]
100
+ ["-", [0, "x"], [0, nil]],
101
+ ["=", [1, "a"], [0, "a"]],
102
+ ["+", [2, nil], [1, "b"]],
103
+ ["+", [2, nil], [2, "c"]],
104
+ ["+", [2, nil], [3, "d"]],
105
+ ["=", [2, "e"], [4, "e"]]
104
106
  ]
105
107
  }
106
108
 
107
- it_has_behavior 'compare sequences correctly'
109
+ it_has_behavior "compare sequences correctly"
108
110
  end
109
111
 
110
- describe 'using %w(a e) & %w(x a b c d e)' do
111
- let(:s1) { %w(a e) }
112
- let(:s2) { %w(x a b c d e) }
112
+ describe "using %w(a e) & %w(x a b c d e)" do
113
+ let(:s1) { %w[a e] }
114
+ let(:s2) { %w[x a b c d e] }
113
115
  let(:result) {
114
116
  [
115
- ['+', [0, nil], [0, 'x']],
116
- ['=', [0, 'a'], [1, 'a']],
117
- ['+', [1, nil], [2, 'b']],
118
- ['+', [1, nil], [3, 'c']],
119
- ['+', [1, nil], [4, 'd']],
120
- ['=', [1, 'e'], [5, 'e']]
117
+ ["+", [0, nil], [0, "x"]],
118
+ ["=", [0, "a"], [1, "a"]],
119
+ ["+", [1, nil], [2, "b"]],
120
+ ["+", [1, nil], [3, "c"]],
121
+ ["+", [1, nil], [4, "d"]],
122
+ ["=", [1, "e"], [5, "e"]]
121
123
  ]
122
124
  }
123
125
 
124
- it_has_behavior 'compare sequences correctly'
126
+ it_has_behavior "compare sequences correctly"
125
127
  end
126
128
 
127
- describe 'using %w(a e v) & %w(x a b c d e w x)' do
128
- let(:s1) { %w(a e v) }
129
- let(:s2) { %w(x a b c d e w x) }
129
+ describe "using %w(a e v) & %w(x a b c d e w x)" do
130
+ let(:s1) { %w[a e v] }
131
+ let(:s2) { %w[x a b c d e w x] }
130
132
  let(:result) {
131
133
  [
132
- ['+', [0, nil], [0, 'x']],
133
- ['=', [0, 'a'], [1, 'a']],
134
- ['+', [1, nil], [2, 'b']],
135
- ['+', [1, nil], [3, 'c']],
136
- ['+', [1, nil], [4, 'd']],
137
- ['=', [1, 'e'], [5, 'e']],
138
- ['!', [2, 'v'], [6, 'w']],
139
- ['+', [3, nil], [7, 'x']]
134
+ ["+", [0, nil], [0, "x"]],
135
+ ["=", [0, "a"], [1, "a"]],
136
+ ["+", [1, nil], [2, "b"]],
137
+ ["+", [1, nil], [3, "c"]],
138
+ ["+", [1, nil], [4, "d"]],
139
+ ["=", [1, "e"], [5, "e"]],
140
+ ["!", [2, "v"], [6, "w"]],
141
+ ["+", [3, nil], [7, "x"]]
140
142
  ]
141
143
  }
142
144
 
143
- it_has_behavior 'compare sequences correctly'
145
+ it_has_behavior "compare sequences correctly"
144
146
  end
145
147
 
146
- describe 'using %w() & %w(a b c)' do
147
- let(:s1) { %w() }
148
- let(:s2) { %w(a b c) }
148
+ describe "using %w() & %w(a b c)" do
149
+ let(:s1) { %w[] }
150
+ let(:s2) { %w[a b c] }
149
151
  let(:result) {
150
152
  [
151
- ['+', [0, nil], [0, 'a']],
152
- ['+', [0, nil], [1, 'b']],
153
- ['+', [0, nil], [2, 'c']]
153
+ ["+", [0, nil], [0, "a"]],
154
+ ["+", [0, nil], [1, "b"]],
155
+ ["+", [0, nil], [2, "c"]]
154
156
  ]
155
157
  }
156
158
 
157
- it_has_behavior 'compare sequences correctly'
159
+ it_has_behavior "compare sequences correctly"
158
160
  end
159
161
 
160
- describe 'using %w(a b c) & %w(1)' do
161
- let(:s1) { %w(a b c) }
162
- let(:s2) { %w(1) }
162
+ describe "using %w(a b c) & %w(1)" do
163
+ let(:s1) { %w[a b c] }
164
+ let(:s2) { %w[1] }
163
165
  let(:result) {
164
166
  [
165
- ['!', [0, 'a'], [0, '1']],
166
- ['-', [1, 'b'], [1, nil]],
167
- ['-', [2, 'c'], [1, nil]]
167
+ ["!", [0, "a"], [0, "1"]],
168
+ ["-", [1, "b"], [1, nil]],
169
+ ["-", [2, "c"], [1, nil]]
168
170
  ]
169
171
  }
170
172
 
171
- it_has_behavior 'compare sequences correctly'
173
+ it_has_behavior "compare sequences correctly"
172
174
  end
173
175
 
174
- describe 'using %w(a b c) & %w(c)' do
175
- let(:s1) { %w(a b c) }
176
- let(:s2) { %w(c) }
176
+ describe "using %w(a b c) & %w(c)" do
177
+ let(:s1) { %w[a b c] }
178
+ let(:s2) { %w[c] }
177
179
  let(:result) {
178
180
  [
179
- ['-', [0, 'a'], [0, nil]],
180
- ['-', [1, 'b'], [0, nil]],
181
- ['=', [2, 'c'], [0, 'c']]
181
+ ["-", [0, "a"], [0, nil]],
182
+ ["-", [1, "b"], [0, nil]],
183
+ ["=", [2, "c"], [0, "c"]]
182
184
  ]
183
185
  }
184
186
 
185
- it_has_behavior 'compare sequences correctly'
187
+ it_has_behavior "compare sequences correctly"
186
188
  end
187
189
 
188
- describe 'using %w(abcd efgh ijkl mnop) & []' do
189
- let(:s1) { %w(abcd efgh ijkl mnop) }
190
+ describe "using %w(abcd efgh ijkl mnop) & []" do
191
+ let(:s1) { %w[abcd efgh ijkl mnop] }
190
192
  let(:s2) { [] }
191
193
  let(:result) {
192
194
  [
193
- ['-', [0, 'abcd'], [0, nil]],
194
- ['-', [1, 'efgh'], [0, nil]],
195
- ['-', [2, 'ijkl'], [0, nil]],
196
- ['-', [3, 'mnop'], [0, nil]]
195
+ ["-", [0, "abcd"], [0, nil]],
196
+ ["-", [1, "efgh"], [0, nil]],
197
+ ["-", [2, "ijkl"], [0, nil]],
198
+ ["-", [3, "mnop"], [0, nil]]
197
199
  ]
198
200
  }
199
201
 
200
- it_has_behavior 'compare sequences correctly'
202
+ it_has_behavior "compare sequences correctly"
201
203
  end
202
204
 
203
- describe 'using [[1,2]] & []' do
205
+ describe "using [[1,2]] & []" do
204
206
  let(:s1) { [[1, 2]] }
205
207
  let(:s2) { [] }
206
208
  let(:result) {
207
209
  [
208
- ['-', [0, [1, 2]], [0, nil]]
210
+ ["-", [0, [1, 2]], [0, nil]]
209
211
  ]
210
212
  }
211
213
 
212
- it_has_behavior 'compare sequences correctly'
214
+ it_has_behavior "compare sequences correctly"
213
215
  end
214
216
  end