diff-lcs 1.3 → 1.4
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.
- checksums.yaml +5 -5
- data/Contributing.md +1 -0
- data/History.md +180 -153
- data/Manifest.txt +8 -0
- data/README.rdoc +9 -10
- data/Rakefile +12 -18
- data/autotest/discover.rb +3 -1
- data/bin/htmldiff +7 -4
- data/bin/ldiff +4 -1
- data/lib/diff-lcs.rb +1 -1
- data/lib/diff/lcs.rb +177 -170
- data/lib/diff/lcs/array.rb +1 -1
- data/lib/diff/lcs/backports.rb +9 -0
- data/lib/diff/lcs/block.rb +1 -1
- data/lib/diff/lcs/callbacks.rb +15 -12
- data/lib/diff/lcs/change.rb +30 -37
- data/lib/diff/lcs/htmldiff.rb +17 -16
- data/lib/diff/lcs/hunk.rb +59 -47
- data/lib/diff/lcs/internals.rb +36 -39
- data/lib/diff/lcs/ldiff.rb +33 -25
- data/lib/diff/lcs/string.rb +1 -1
- data/spec/change_spec.rb +31 -7
- data/spec/diff_spec.rb +16 -12
- data/spec/fixtures/aX +1 -0
- data/spec/fixtures/bXaX +1 -0
- data/spec/fixtures/ldiff/output.diff +4 -0
- data/spec/fixtures/ldiff/output.diff-c +7 -0
- data/spec/fixtures/ldiff/output.diff-e +3 -0
- data/spec/fixtures/ldiff/output.diff-f +3 -0
- data/spec/fixtures/ldiff/output.diff-u +5 -0
- data/spec/hunk_spec.rb +20 -20
- data/spec/issues_spec.rb +18 -10
- data/spec/lcs_spec.rb +10 -10
- data/spec/ldiff_spec.rb +54 -29
- data/spec/patch_spec.rb +93 -99
- data/spec/sdiff_spec.rb +89 -89
- data/spec/spec_helper.rb +115 -63
- data/spec/traverse_balanced_spec.rb +173 -173
- data/spec/traverse_sequences_spec.rb +28 -28
- metadata +30 -16
@@ -1,10 +1,10 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
describe
|
6
|
-
describe
|
7
|
-
describe
|
5
|
+
describe 'Diff::LCS.traverse_sequences' do
|
6
|
+
describe 'callback with no finishers' do
|
7
|
+
describe 'over (seq1, seq2)' do
|
8
8
|
before(:each) do
|
9
9
|
@callback_s1_s2 = simple_callback_no_finishers
|
10
10
|
Diff::LCS.traverse_sequences(seq1, seq2, @callback_s1_s2)
|
@@ -13,27 +13,27 @@ describe "Diff::LCS.traverse_sequences" do
|
|
13
13
|
Diff::LCS.traverse_sequences(seq2, seq1, @callback_s2_s1)
|
14
14
|
end
|
15
15
|
|
16
|
-
it
|
16
|
+
it 'has the correct LCS result on left-matches' do
|
17
17
|
expect(@callback_s1_s2.matched_a).to eq(correct_lcs)
|
18
18
|
expect(@callback_s2_s1.matched_a).to eq(correct_lcs)
|
19
19
|
end
|
20
20
|
|
21
|
-
it
|
21
|
+
it 'has the correct LCS result on right-matches' do
|
22
22
|
expect(@callback_s1_s2.matched_b).to eq(correct_lcs)
|
23
23
|
expect(@callback_s2_s1.matched_b).to eq(correct_lcs)
|
24
24
|
end
|
25
25
|
|
26
|
-
it
|
26
|
+
it 'has the correct skipped sequences with the left sequence' do
|
27
27
|
expect(@callback_s1_s2.discards_a).to eq(skipped_seq1)
|
28
28
|
expect(@callback_s2_s1.discards_a).to eq(skipped_seq2)
|
29
29
|
end
|
30
30
|
|
31
|
-
it
|
31
|
+
it 'has the correct skipped sequences with the right sequence' do
|
32
32
|
expect(@callback_s1_s2.discards_b).to eq(skipped_seq2)
|
33
33
|
expect(@callback_s2_s1.discards_b).to eq(skipped_seq1)
|
34
34
|
end
|
35
35
|
|
36
|
-
it
|
36
|
+
it 'does not have anything done markers from the left or right sequences' do
|
37
37
|
expect(@callback_s1_s2.done_a).to be_empty
|
38
38
|
expect(@callback_s1_s2.done_b).to be_empty
|
39
39
|
expect(@callback_s2_s1.done_a).to be_empty
|
@@ -41,64 +41,64 @@ describe "Diff::LCS.traverse_sequences" do
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
describe
|
44
|
+
describe 'over (hello, hello)' do
|
45
45
|
before(:each) do
|
46
46
|
@callback = simple_callback_no_finishers
|
47
47
|
Diff::LCS.traverse_sequences(hello, hello, @callback)
|
48
48
|
end
|
49
49
|
|
50
|
-
it
|
50
|
+
it 'has the correct LCS result on left-matches' do
|
51
51
|
expect(@callback.matched_a).to eq(hello.split(//))
|
52
52
|
end
|
53
53
|
|
54
|
-
it
|
54
|
+
it 'has the correct LCS result on right-matches' do
|
55
55
|
expect(@callback.matched_b).to eq(hello.split(//))
|
56
56
|
end
|
57
57
|
|
58
|
-
it
|
58
|
+
it 'has the correct skipped sequences with the left sequence', :only => true do
|
59
59
|
expect(@callback.discards_a).to be_empty
|
60
60
|
end
|
61
61
|
|
62
|
-
it
|
62
|
+
it 'has the correct skipped sequences with the right sequence' do
|
63
63
|
expect(@callback.discards_b).to be_empty
|
64
64
|
end
|
65
65
|
|
66
|
-
it
|
66
|
+
it 'does not have anything done markers from the left or right sequences' do
|
67
67
|
expect(@callback.done_a).to be_empty
|
68
68
|
expect(@callback.done_b).to be_empty
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
-
describe
|
72
|
+
describe 'over (hello_ary, hello_ary)' do
|
73
73
|
before(:each) do
|
74
74
|
@callback = simple_callback_no_finishers
|
75
75
|
Diff::LCS.traverse_sequences(hello_ary, hello_ary, @callback)
|
76
76
|
end
|
77
77
|
|
78
|
-
it
|
78
|
+
it 'has the correct LCS result on left-matches' do
|
79
79
|
expect(@callback.matched_a).to eq(hello_ary)
|
80
80
|
end
|
81
81
|
|
82
|
-
it
|
82
|
+
it 'has the correct LCS result on right-matches' do
|
83
83
|
expect(@callback.matched_b).to eq(hello_ary)
|
84
84
|
end
|
85
85
|
|
86
|
-
it
|
86
|
+
it 'has the correct skipped sequences with the left sequence' do
|
87
87
|
expect(@callback.discards_a).to be_empty
|
88
88
|
end
|
89
89
|
|
90
|
-
it
|
90
|
+
it 'has the correct skipped sequences with the right sequence' do
|
91
91
|
expect(@callback.discards_b).to be_empty
|
92
92
|
end
|
93
93
|
|
94
|
-
it
|
94
|
+
it 'does not have anything done markers from the left or right sequences' do
|
95
95
|
expect(@callback.done_a).to be_empty
|
96
96
|
expect(@callback.done_b).to be_empty
|
97
97
|
end
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
101
|
-
describe
|
101
|
+
describe 'callback with finisher' do
|
102
102
|
before(:each) do
|
103
103
|
@callback_s1_s2 = simple_callback
|
104
104
|
Diff::LCS.traverse_sequences(seq1, seq2, @callback_s1_s2)
|
@@ -106,28 +106,28 @@ describe "Diff::LCS.traverse_sequences" do
|
|
106
106
|
Diff::LCS.traverse_sequences(seq2, seq1, @callback_s2_s1)
|
107
107
|
end
|
108
108
|
|
109
|
-
it
|
109
|
+
it 'has the correct LCS result on left-matches' do
|
110
110
|
expect(@callback_s1_s2.matched_a).to eq(correct_lcs)
|
111
111
|
expect(@callback_s2_s1.matched_a).to eq(correct_lcs)
|
112
112
|
end
|
113
113
|
|
114
|
-
it
|
114
|
+
it 'has the correct LCS result on right-matches' do
|
115
115
|
expect(@callback_s1_s2.matched_b).to eq(correct_lcs)
|
116
116
|
expect(@callback_s2_s1.matched_b).to eq(correct_lcs)
|
117
117
|
end
|
118
118
|
|
119
|
-
it
|
119
|
+
it 'has the correct skipped sequences for the left sequence' do
|
120
120
|
expect(@callback_s1_s2.discards_a).to eq(skipped_seq1)
|
121
121
|
expect(@callback_s2_s1.discards_a).to eq(skipped_seq2)
|
122
122
|
end
|
123
123
|
|
124
|
-
it
|
124
|
+
it 'has the correct skipped sequences for the right sequence' do
|
125
125
|
expect(@callback_s1_s2.discards_b).to eq(skipped_seq2)
|
126
126
|
expect(@callback_s2_s1.discards_b).to eq(skipped_seq1)
|
127
127
|
end
|
128
128
|
|
129
|
-
it
|
130
|
-
expect(@callback_s1_s2.done_a).to eq([[
|
129
|
+
it 'has done markers differently-sized sequences' do
|
130
|
+
expect(@callback_s1_s2.done_a).to eq([['p', 9, 's', 10]])
|
131
131
|
expect(@callback_s1_s2.done_b).to be_empty
|
132
132
|
|
133
133
|
# 20110731 I don't yet understand why this particular behaviour
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: diff-lcs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.4'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Austin Ziegler
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hoe-doofus
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
version: '10.0'
|
110
110
|
- - "<"
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version: '
|
112
|
+
version: '14'
|
113
113
|
type: :development
|
114
114
|
prerelease: false
|
115
115
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -119,7 +119,7 @@ dependencies:
|
|
119
119
|
version: '10.0'
|
120
120
|
- - "<"
|
121
121
|
- !ruby/object:Gem::Version
|
122
|
-
version: '
|
122
|
+
version: '14'
|
123
123
|
- !ruby/object:Gem::Dependency
|
124
124
|
name: rdoc
|
125
125
|
requirement: !ruby/object:Gem::Requirement
|
@@ -140,23 +140,27 @@ dependencies:
|
|
140
140
|
requirements:
|
141
141
|
- - "~>"
|
142
142
|
- !ruby/object:Gem::Version
|
143
|
-
version: '3.
|
143
|
+
version: '3.22'
|
144
144
|
type: :development
|
145
145
|
prerelease: false
|
146
146
|
version_requirements: !ruby/object:Gem::Requirement
|
147
147
|
requirements:
|
148
148
|
- - "~>"
|
149
149
|
- !ruby/object:Gem::Version
|
150
|
-
version: '3.
|
150
|
+
version: '3.22'
|
151
151
|
description: |-
|
152
152
|
Diff::LCS computes the difference between two Enumerable sequences using the
|
153
153
|
McIlroy-Hunt longest common subsequence (LCS) algorithm. It includes utilities
|
154
154
|
to create a simple HTML diff output format and a standard diff-like tool.
|
155
155
|
|
156
|
-
This is release 1.
|
157
|
-
to
|
158
|
-
|
159
|
-
|
156
|
+
This is release 1.4, providing a simple extension that allows for
|
157
|
+
Diff::LCS::Change objects to be treated implicitly as arrays. Ruby versions
|
158
|
+
below 2.5 are soft-deprecated.
|
159
|
+
|
160
|
+
This means that older versions are no longer part of the CI test suite. If any
|
161
|
+
changes have been introduced that break those versions, bug reports and patches
|
162
|
+
will be accepted, but it will be up to the reporter to verify any fixes prior
|
163
|
+
to release. A future release will completely break compatibility.
|
160
164
|
email:
|
161
165
|
- halostatue@gmail.com
|
162
166
|
executables:
|
@@ -189,6 +193,7 @@ files:
|
|
189
193
|
- lib/diff-lcs.rb
|
190
194
|
- lib/diff/lcs.rb
|
191
195
|
- lib/diff/lcs/array.rb
|
196
|
+
- lib/diff/lcs/backports.rb
|
192
197
|
- lib/diff/lcs/block.rb
|
193
198
|
- lib/diff/lcs/callbacks.rb
|
194
199
|
- lib/diff/lcs/change.rb
|
@@ -199,8 +204,15 @@ files:
|
|
199
204
|
- lib/diff/lcs/string.rb
|
200
205
|
- spec/change_spec.rb
|
201
206
|
- spec/diff_spec.rb
|
207
|
+
- spec/fixtures/aX
|
208
|
+
- spec/fixtures/bXaX
|
202
209
|
- spec/fixtures/ds1.csv
|
203
210
|
- spec/fixtures/ds2.csv
|
211
|
+
- spec/fixtures/ldiff/output.diff
|
212
|
+
- spec/fixtures/ldiff/output.diff-c
|
213
|
+
- spec/fixtures/ldiff/output.diff-e
|
214
|
+
- spec/fixtures/ldiff/output.diff-f
|
215
|
+
- spec/fixtures/ldiff/output.diff-u
|
204
216
|
- spec/hunk_spec.rb
|
205
217
|
- spec/issues_spec.rb
|
206
218
|
- spec/lcs_spec.rb
|
@@ -215,8 +227,11 @@ licenses:
|
|
215
227
|
- MIT
|
216
228
|
- Artistic-2.0
|
217
229
|
- GPL-2.0+
|
218
|
-
metadata:
|
219
|
-
|
230
|
+
metadata:
|
231
|
+
homepage_uri: https://github.com/halostatue/diff-lcs
|
232
|
+
source_code_uri: https://github.com/halostatue/diff-lcs
|
233
|
+
bug_tracker_uri: https://github.com/halostatue/diff-lcs/issues
|
234
|
+
post_install_message:
|
220
235
|
rdoc_options:
|
221
236
|
- "--main"
|
222
237
|
- README.rdoc
|
@@ -233,9 +248,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
233
248
|
- !ruby/object:Gem::Version
|
234
249
|
version: '0'
|
235
250
|
requirements: []
|
236
|
-
|
237
|
-
|
238
|
-
signing_key:
|
251
|
+
rubygems_version: 3.0.3
|
252
|
+
signing_key:
|
239
253
|
specification_version: 4
|
240
254
|
summary: Diff::LCS computes the difference between two Enumerable sequences using
|
241
255
|
the McIlroy-Hunt longest common subsequence (LCS) algorithm
|