diff-lcs 1.3 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +5 -5
  2. data/Contributing.md +84 -48
  3. data/History.md +334 -154
  4. data/Manifest.txt +23 -1
  5. data/README.rdoc +10 -10
  6. data/Rakefile +85 -21
  7. data/bin/htmldiff +7 -4
  8. data/bin/ldiff +4 -1
  9. data/lib/diff/lcs/array.rb +1 -1
  10. data/lib/diff/lcs/backports.rb +9 -0
  11. data/lib/diff/lcs/block.rb +1 -1
  12. data/lib/diff/lcs/callbacks.rb +15 -12
  13. data/lib/diff/lcs/change.rb +30 -37
  14. data/lib/diff/lcs/htmldiff.rb +17 -16
  15. data/lib/diff/lcs/hunk.rb +156 -74
  16. data/lib/diff/lcs/internals.rb +43 -42
  17. data/lib/diff/lcs/ldiff.rb +46 -42
  18. data/lib/diff/lcs/string.rb +1 -1
  19. data/lib/diff/lcs.rb +188 -174
  20. data/lib/diff-lcs.rb +1 -1
  21. data/spec/change_spec.rb +31 -7
  22. data/spec/diff_spec.rb +16 -12
  23. data/spec/fixtures/aX +1 -0
  24. data/spec/fixtures/bXaX +1 -0
  25. data/spec/fixtures/ldiff/output.diff +4 -0
  26. data/spec/fixtures/ldiff/output.diff-c +7 -0
  27. data/spec/fixtures/ldiff/output.diff-e +3 -0
  28. data/spec/fixtures/ldiff/output.diff-f +3 -0
  29. data/spec/fixtures/ldiff/output.diff-u +5 -0
  30. data/spec/fixtures/ldiff/output.diff.chef +4 -0
  31. data/spec/fixtures/ldiff/output.diff.chef-c +15 -0
  32. data/spec/fixtures/ldiff/output.diff.chef-e +3 -0
  33. data/spec/fixtures/ldiff/output.diff.chef-f +3 -0
  34. data/spec/fixtures/ldiff/output.diff.chef-u +9 -0
  35. data/spec/fixtures/ldiff/output.diff.chef2 +7 -0
  36. data/spec/fixtures/ldiff/output.diff.chef2-c +20 -0
  37. data/spec/fixtures/ldiff/output.diff.chef2-d +7 -0
  38. data/spec/fixtures/ldiff/output.diff.chef2-e +7 -0
  39. data/spec/fixtures/ldiff/output.diff.chef2-f +7 -0
  40. data/spec/fixtures/ldiff/output.diff.chef2-u +16 -0
  41. data/spec/fixtures/new-chef +4 -0
  42. data/spec/fixtures/new-chef2 +17 -0
  43. data/spec/fixtures/old-chef +4 -0
  44. data/spec/fixtures/old-chef2 +14 -0
  45. data/spec/hunk_spec.rb +37 -26
  46. data/spec/issues_spec.rb +115 -10
  47. data/spec/lcs_spec.rb +10 -10
  48. data/spec/ldiff_spec.rb +71 -31
  49. data/spec/patch_spec.rb +93 -99
  50. data/spec/sdiff_spec.rb +89 -89
  51. data/spec/spec_helper.rb +118 -65
  52. data/spec/traverse_balanced_spec.rb +173 -173
  53. data/spec/traverse_sequences_spec.rb +29 -31
  54. metadata +54 -33
  55. data/autotest/discover.rb +0 -1
data/History.md CHANGED
@@ -1,197 +1,353 @@
1
+ # History
2
+
3
+ ## 1.5.0 / 2021-12-23
4
+
5
+ - Updated the CI configuration and monkey-patch Hoe.
6
+
7
+ - Kenichi Kamiya fixed a test configuration deprecation in SimpleCov. [#69]
8
+
9
+ - Tien introduced several corrections and code improvements:
10
+
11
+ - Removed an off-by-one error when calculating an index value by embracing
12
+ Ruby iteration properly. This had a side-effect of fixing a long-standing
13
+ bug in `#traverse_sequences` where the traversal would not be transitive.
14
+ That is, `LCS(s2, s1)` should produce a sequence that is transitive with
15
+ `LCS(s1, s2)` on traversal, and applying the diff computed from those
16
+ results would result in equivalent changes that could be played forward or
17
+ backward as appropriate. [#71], [#75]
18
+
19
+ - The above fix resulted in a changed order of the longest common subsequence
20
+ when callbacks were applied. After analysis, it was determined that the
21
+ computed subsequence was _equivalent_ to the prior version, so the test was
22
+ updated. This also resulted in the clarification of documentation when
23
+ traversing the subsequences. [#79]
24
+
25
+ - An infinite loop case in the case where Diff::LCS would be included into an
26
+ enumerable class has been fixed. [#73]
27
+
28
+ - Clarified the purpose of a threshold test in calculation of LCS. [#72],
29
+ [#80]
30
+
31
+ - Removed autotest directory
32
+
33
+ ## 1.4.4 / 2020-07-01
34
+
35
+ - Fixed an issue reported by Jun Aruga in the Diff::LCS::Ldiff binary text
36
+ detection. [#44]
37
+
38
+ - Fixed a theoretical issue reported by Jun Aruga in Diff::LCS::Hunk to raise
39
+ a more useful exception. [#43]
40
+
41
+ - Added documentation that should address custom object issues as reported in
42
+ [#35].
43
+
44
+ - Fixed more diff errors, in part reported in [#65].
45
+
46
+ - The use of `Numeric#abs` is incorrect in `Diff::LCS::Block#diff_size`. The
47
+ diff size _must_ be accurate for correct change placement.
48
+
49
+ - When selecting @max_diff_size in Diff::LCS::Hunk, choose it based on
50
+ `block.diff_size.abs`.
51
+
52
+ - Made a number of changes that will, unfortunately, increase allocations at
53
+ the cost of being safe with frozen strings.
54
+
55
+ - Add some knowledge that when `Diff::LCS::Hunk#diff` is called, that we are
56
+ processing the _last_ hunk, so some changes will be made to how the output
57
+ is generated.
58
+
59
+ - `old`, `ed`, and `reverse_ed` formats have no differences.
60
+
61
+ - `unified` format will report `` given the
62
+ correct conditions, at most once. Unified range reporting also differs for
63
+ the last hunk such that the `length` of the range is reduced by one.
64
+
65
+ - `context` format will report `\No newline at end of file` given the
66
+ correct conditions, up to once per "file". Context range reporting also
67
+ differs for the last hunk such that the `end` part of the range is reduced
68
+ by one to a minimum of one.
69
+
70
+ - Added a bunch more tests for the cases above, and fixed `hunk_spec.rb` so that
71
+ the phrase being compared isn't nonsense French.
72
+
73
+ - Updated formatting.
74
+
75
+ - Added a Rake task to assist with manual testing on Ruby 1.8.
76
+
77
+ ## 1.4.3 / 2020-06-29
78
+
79
+ - Fixed several issues with the 1.4 on Rubies older than 2.0. Some of this was
80
+ providing useful shim functions to Hoe 3.x (which dropped these older Rubies
81
+ a while ago). Specifically:
82
+
83
+ - Removed Array#lazy from a method in Diff::LCS::Hunk.
84
+
85
+ - Changed some unit tests to use old-style Symbol-keyed hashes.
86
+
87
+ - Changed some unit test helper functions to no longer use keyword parameters,
88
+ but only a trailing options hash.
89
+
90
+ - Made the use of `psych` dependent on `RUBY_VERSION >= 1.9`.
91
+
92
+ Resolves [#63].
93
+
94
+ ## 1.4.2 / 2020-06-23
95
+
96
+ - Camille Drapier fixed a small issue with RuboCop configuration. [#59]
97
+
98
+ - Applied another fix (and unit test) to fix an issue for the Chef team.
99
+ [#60], [#61]
100
+
101
+ ## 1.4.1 / 2020-06-23
102
+
103
+ - Fix an issue where diff sizes could be negative, and they should be. [#57],
104
+ [#58]
105
+
106
+ ## 1.4 / 2020-06-23
107
+
108
+ - Ruby versions lower than 2.4 are soft-deprecated and will not be run as part
109
+ of the CI process any longer.
110
+
111
+ - Akinora MUSHA (knu) added the ability for Diff::LCS::Change objects to be
112
+ implicitly treated arrays. Originally provided as pull request [#47], but it
113
+ introduced a number of test failures as documented in [#48], and remediation
114
+ of Diff::LCS itself was introduced in [#49].
115
+
116
+ - Resolved [#5] with some tests comparing output from `system` calls to
117
+ `bin/ldiff` with some pre-generated output. Resolved [#6] with these tests.
118
+
119
+ - Resolved a previously undetected `bin/ldiff` issue with `--context` output not
120
+ matching `diff --context` output.
121
+
122
+ - Resolved an issue with later versions of Ruby not working with an `OptParse`
123
+ specification of `Numeric`; this has been changed to `Integer`.
124
+
125
+ - Brandon Fish added truffleruby in [#52].
126
+
127
+ - Fixed two missing classes as reported in [#53].
128
+
1
129
  ## 1.3 / 2017-01-18
2
130
 
3
- * Bugs fixed:
131
+ - Bugs fixed:
132
+
133
+ - Fixed an error for bin/ldiff --version. Fixes issue [#21].
134
+
135
+ - Force Diff::LCS::Change and Diff::LCS::ContextChange to only perform
136
+ equality comparisons against themselves. Provided by Kevin Mook in pull
137
+ request [#29].
138
+
139
+ - Fix tab expansion in htmldiff, provided by Mark Friedgan in pull request
140
+ [#25].
141
+
142
+ - Silence Ruby 2.4 Fixnum deprecation warnings. Fixes issue [#38] and pull
143
+ request [#36].
4
144
 
5
- * Fixed an error for bin/ldiff --version. Fixes [issue #21][].
6
- * Force Diff::LCS::Change and Diff::LCS::ContextChange to only perform
7
- equality comparisons against themselves. Provided by Kevin Mook in
8
- [pull request #29][].
9
- * Fix tab expansion in htmldiff, provided by Mark Friedgan in
10
- [pull request #25][].
11
- * Silence Ruby 2.4 Fixnum deprecation warnings. Fixxues [issue #38][] and
12
- [pull request#36][].
13
- * Ensure that test dependencies are loaded properly. Fixes [issue #33][]
14
- and [pull request #34][].
15
- * Fix [issue #1][] with incorrect intuition of patch direction. Tentative
16
- fix, but the previous failure cases pass now.
145
+ - Ensure that test dependencies are loaded properly. Fixes issue [#33] and
146
+ pull request [#34].
17
147
 
18
- * Tooling changes:
148
+ - Fix issue [#1] with incorrect intuition of patch direction. Tentative fix,
149
+ but the previous failure cases pass now.
19
150
 
20
- * Added SimpleCov and Coveralls support.
21
- * Change the homepage (temporarily) to the GitHub repo.
22
- * Updated testing and gem infrastructure.
23
- * Modernized the specs.
151
+ - Tooling changes:
24
152
 
25
- * Cleaned up documentation.
153
+ - Added SimpleCov and Coveralls support.
26
154
 
27
- * Added a Code of Conduct.
155
+ - Change the homepage (temporarily) to the GitHub repo.
156
+
157
+ - Updated testing and gem infrastructure.
158
+
159
+ - Modernized the specs.
160
+
161
+ - Cleaned up documentation.
162
+
163
+ - Added a Code of Conduct.
28
164
 
29
165
  ## 1.2.5 / 2013-11-08
30
166
 
31
- * Bugs fixed:
167
+ - Bugs fixed:
32
168
 
33
- * Comparing arrays flattened them too far, especially with
34
- Diff::LCS.sdiff. Fixed by Josh Bronson in [pull request #23][].
169
+ - Comparing arrays flattened them too far, especially with Diff::LCS.sdiff.
170
+ Fixed by Josh Bronson in pull request [#23].
35
171
 
36
172
  ## 1.2.4 / 2013-04-20
37
173
 
38
- * Bugs fixed:
174
+ - Bugs fixed:
39
175
 
40
- * A bug was introduced after 1.1.3 when pruning common sequences at the
41
- start of comparison. Paul Kunysch (@pck) fixed this in
42
- [pull request #18][]. Thanks!
176
+ - A bug was introduced after 1.1.3 when pruning common sequences at the start
177
+ of comparison. Paul Kunysch (@pck) fixed this in pull request [#18]. Thanks!
43
178
 
44
- * The Rubinius (1.9 mode) bug in [rubinius/rubinius#2268][] has been
45
- fixed by the Rubinius team two days after it was filed. Thanks for
46
- fixing this so quickly!
179
+ - The Rubinius (1.9 mode) bug in [rubinius/rubinius#2268] has been fixed by
180
+ the Rubinius team two days after it was filed. Thanks for fixing this so
181
+ quickly!
47
182
 
48
- * Switching to Raggi's hoe-gemspec2 for gemspec generation.
183
+ - Switching to Raggi's hoe-gemspec2 for gemspec generation.
49
184
 
50
185
  ## 1.2.3 / 2013-04-11
51
186
 
52
- * Bugs Fixed:
187
+ - Bugs Fixed:
188
+
189
+ - The new encoding detection for diff output generation (added in 1.2.2)
190
+ introduced a bug if the left side of the comparison was the empty set.
191
+ Originally found in [rspec/rspec-expectations#238] and
192
+ [rspec/rspec-expectations#239]. Jon Rowe developed a reasonable heuristic
193
+ (left side, right side, empty string literal) to avoid this bug.
53
194
 
54
- * The new encoding detection for diff output generation (added in 1.2.2)
55
- introduced a bug if the left side of the comparison was the empty set.
56
- Originally found in [rspec/rspec-expectations#238][] and
57
- [rspec/rspec-expectations#239][]. Jon Rowe developed a reasonable
58
- heuristic (left side, right side, empty string literal) to avoid this
59
- bug.
60
- * There is a known issue with Rubinius in 1.9 mode reported in
61
- [rubinius/rubinius#2268][] and demonstrated in the Travis CI builds.
62
- For all other tested platforms, diff-lcs is considered stable. As soon
63
- as a suitably small test-case can be created for the Rubinius team to
64
- examine, this will be added to the Rubinius issue around this.
195
+ - There is a known issue with Rubinius in 1.9 mode reported in
196
+ [rubinius/rubinius#2268] and demonstrated in the Travis CI builds. For all
197
+ other tested platforms, diff-lcs is considered stable. As soon as a suitably
198
+ small test-case can be created for the Rubinius team to examine, this will
199
+ be added to the Rubinius issue around this.
65
200
 
66
201
  ## 1.2.2 / 2013-03-30
67
202
 
68
- * Bugs Fixed:
203
+ - Bugs Fixed:
69
204
 
70
- * Diff::LCS::Hunk could not properly generate a difference for comparison
71
- sets that are not US-ASCII-compatible because of the use of literal
72
- regular expressions and strings. Jon Rowe found this in
73
- [rspec/rspec-expectations#219][] and provided a first pass
74
- implementation in [pull request #15][]. I've reworked it because of
75
- test failures in Rubinius when running in Ruby 1.9 mode. This coerces
76
- the added values to the encoding of the old dataset (as determined by
77
- the first piece of the old dataset).
78
- * Adding Travis CI testing for Ruby 2.0.
205
+ - Diff::LCS::Hunk could not properly generate a difference for comparison sets
206
+ that are not US-ASCII-compatible because of the use of literal regular
207
+ expressions and strings. Jon Rowe found this in
208
+ [rspec/rspec-expectations#219] and provided a first pass implementation in
209
+ pull request [#15]. I've reworked it because of test failures in Rubinius
210
+ when running in Ruby 1.9 mode. This coerces the added values to the encoding
211
+ of the old dataset (as determined by the first piece of the old dataset).
212
+
213
+ - Adding Travis CI testing for Ruby 2.0.
79
214
 
80
215
  ## 1.2.1 / 2013-02-09
81
216
 
82
- * Bugs Fixed:
217
+ - Bugs Fixed:
83
218
 
84
- * As seen in [rspec/rspec-expectations#200][], the release of
85
- Diff::LCS 1.2 introduced an unnecessary public API change to
86
- Diff::LCS::Hunk (see the change at
87
- [rspec/rspec-expectations@3d6fc82c][] for details). The new method name
88
- (and behaviour) is more correct, but I should not have renamed the
89
- function or should have at least provided an alias. This release
90
- restores Diff::LCS::Hunk#unshift as an alias to #merge. Note that the
91
- old #unshift behaviour was incorrect and will not be restored.
219
+ - As seen in [rspec/rspec-expectations#200], the release of Diff::LCS 1.2
220
+ introduced an unnecessary public API change to Diff::LCS::Hunk (see the
221
+ change at [rspec/rspec-expectations@3d6fc82c] for details). The new method
222
+ name (and behaviour) is more correct, but I should not have renamed the
223
+ function or should have at least provided an alias. This release restores
224
+ Diff::LCS::Hunk#unshift as an alias to #merge. Note that the old #unshift
225
+ behaviour was incorrect and will not be restored.
92
226
 
93
227
  ## 1.2.0 / 2013-01-21
94
228
 
95
- * Minor Enhancements:
96
-
97
- * Added special case handling for Diff::LCS.patch so that it handles
98
- patches that are empty or contain no changes.
99
- * Added two new methods (#patch\_me and #unpatch\_me) to the includable
100
- module.
101
-
102
- * Bugs Fixed:
103
-
104
- * Fixed [issue #1][] patch direction detection.
105
- * Resolved [issue #2][] by handling `string[string.size, 1]` properly (it
106
- returns `""` not `nil`).
107
- * Michael Granger (ged) fixed an implementation error in
108
- Diff::LCS::Change and added specs in [pull request #8][]. Thanks!
109
- * Made the code auto-testable.
110
- * Vít Ondruch (voxik) provided the latest version of the GPL2 license
111
- file in [pull request #10][]. Thanks!
112
- * Fixed a documentation issue with the includable versions of #patch! and
113
- #unpatch! where they implied that they would replace the original
114
- value. Given that Diff::LCS.patch always returns a copy, the
115
- documentation was incorrect and has been corrected. To provide the
116
- behaviour that was originally documented, two new methods were added to
117
- provide this behaviour. Found by scooter-dangle in [issue #12][].
118
- Thanks!
119
-
120
- * Code Style Changes:
121
-
122
- * Removed trailing spaces.
123
- * Calling class methods using `.` instead of `::`.
124
- * Vít Ondruch (voxik) removed unnecessary shebangs in [pull request #9][].
125
- Thanks!
126
- * Kenichi Kamiya (kachick) removed some warnings of an unused variable in
127
- lucky [pull request #13][]. Thanks!
128
- * Embarked on a major refactoring to make the files a little more
129
- manageable and understand the code on a deeper level.
130
- * Adding to http://travis-ci.org.
229
+ - Minor Enhancements:
230
+
231
+ - Added special case handling for Diff::LCS.patch so that it handles patches
232
+ that are empty or contain no changes.
233
+
234
+ - Added two new methods (#patch_me and #unpatch_me) to the includable module.
235
+
236
+ - Bugs Fixed:
237
+
238
+ - Fixed issue [#1] patch direction detection.
239
+
240
+ - Resolved issue [#2] by handling `string[string.size, 1]` properly (it
241
+ returns `""` not `nil`).
242
+
243
+ - Michael Granger (ged) fixed an implementation error in Diff::LCS::Change and
244
+ added specs in pull request [#8]. Thanks!
245
+
246
+ - Made the code auto-testable.
247
+
248
+ - Vít Ondruch (voxik) provided the latest version of the GPL2 license file in
249
+ pull request [#10]. Thanks!
250
+
251
+ - Fixed a documentation issue with the includable versions of #patch! and
252
+ #unpatch! where they implied that they would replace the original value.
253
+ Given that Diff::LCS.patch always returns a copy, the documentation was
254
+ incorrect and has been corrected. To provide the behaviour that was
255
+ originally documented, two new methods were added to provide this behaviour.
256
+ Found by scooter-dangle in issue [#12]. Thanks!
257
+
258
+ - Code Style Changes:
259
+
260
+ - Removed trailing spaces.
261
+
262
+ - Calling class methods using `.` instead of `::`.
263
+
264
+ - Vít Ondruch (voxik) removed unnecessary shebangs in pull request [#9].
265
+ Thanks!
266
+
267
+ - Kenichi Kamiya (kachick) removed some warnings of an unused variable in
268
+ lucky pull request [#13]. Thanks!
269
+
270
+ - Embarked on a major refactoring to make the files a little more manageable
271
+ and understand the code on a deeper level.
272
+
273
+ - Adding to http://travis-ci.org.
131
274
 
132
275
  ## 1.1.3 / 2011-08-27
133
276
 
134
- * Converted to 'hoe' for release.
135
- * Converted tests to RSpec 2.
136
- * Extracted the body of htmldiff into a class available from
137
- diff/lcs/htmldiff.
138
- * Migrated development and issue tracking to GitHub.
139
- * Bugs fixed:
277
+ - Converted to 'hoe' for release.
278
+
279
+ - Converted tests to RSpec 2.
280
+
281
+ - Extracted the body of htmldiff into a class available from diff/lcs/htmldiff.
282
+
283
+ - Migrated development and issue tracking to GitHub.
284
+
285
+ - Bugs fixed:
140
286
 
141
- * Eliminated the explicit use of RubyGems in both bin/htmldiff and
142
- bin/ldiff. Resolves [issue #4][].
143
- * Eliminated Ruby warnings. Resolves [issue #3][].
287
+ - Eliminated the explicit use of RubyGems in both bin/htmldiff and bin/ldiff.
288
+ Resolves issue [#4].
289
+
290
+ - Eliminated Ruby warnings. Resolves issue [#3].
144
291
 
145
292
  ## 1.1.2 / 2004-10-20
146
293
 
147
- * Fixed a problem reported by Mauricio Fernandez in htmldiff.
294
+ - Fixed a problem reported by Mauricio Fernandez in htmldiff.
148
295
 
149
296
  ## 1.1.1 / 2004-09-25
150
297
 
151
- * Fixed bug #891 (Set returned from patch command does not contain last equal
152
- part).
153
- * Fixed a problem with callback initialisation code (it assumed that all
154
- callbacks passed as classes can be initialised; now, it rescues
155
- NoMethodError in the event of private :new being called).
156
- * Modified the non-initialisable callbacks to have a private #new method.
157
- * Moved ldiff core code to Diff::LCS::Ldiff (diff/lcs/ldiff.rb).
298
+ - Fixed bug #891 (Set returned from patch command does not contain last equal
299
+ part).
300
+
301
+ - Fixed a problem with callback initialisation code (it assumed that all
302
+ callbacks passed as classes can be initialised; now, it rescues NoMethodError
303
+ in the event of private :new being called).
304
+
305
+ - Modified the non-initialisable callbacks to have a private #new method.
306
+
307
+ - Moved ldiff core code to Diff::LCS::Ldiff (diff/lcs/ldiff.rb).
308
+
309
+ ## 1.1.0
158
310
 
159
- ## 1.1.0 / -
311
+ - Eliminated the need for Diff::LCS::Event and removed it.
160
312
 
161
- * Eliminated the need for Diff::LCS::Event and removed it.
162
- * Added a contextual diff callback, Diff::LCS::ContextDiffCallback.
163
- * Implemented patching/unpatching for standard Diff callback output formats
164
- with both #diff and #sdiff.
165
- * Extensive documentation changes.
313
+ - Added a contextual diff callback, Diff::LCS::ContextDiffCallback.
314
+
315
+ - Implemented patching/unpatching for standard Diff callback output formats with
316
+ both #diff and #sdiff.
317
+
318
+ - Extensive documentation changes.
166
319
 
167
320
  ## 1.0.4
168
321
 
169
- * Fixed a problem with bin/ldiff output, especially for unified format.
170
- Newlines that should have been present weren't.
171
- * Changed the .tar.gz installer to generate Windows batch files if ones do
172
- not exist already. Removed the existing batch files as they didn't work.
322
+ - Fixed a problem with bin/ldiff output, especially for unified format. Newlines
323
+ that should have been present weren't.
324
+
325
+ - Changed the .tar.gz installer to generate Windows batch files if ones do not
326
+ exist already. Removed the existing batch files as they didn't work.
173
327
 
174
328
  ## 1.0.3
175
329
 
176
- * Fixed a problem with #traverse\_sequences where the first difference from
177
- the left sequence might not be appropriately captured.
330
+ - Fixed a problem with #traverse_sequences where the first difference from the
331
+ left sequence might not be appropriately captured.
178
332
 
179
333
  ## 1.0.2
180
334
 
181
- * Fixed an issue with ldiff not working because actions were changed from
182
- symbols to strings.
335
+ - Fixed an issue with ldiff not working because actions were changed from
336
+ symbols to strings.
183
337
 
184
338
  ## 1.0.1
185
339
 
186
- * Minor modifications to the gemspec, the README.
187
- * Renamed the diff program to ldiff (as well as the companion batch file) so
188
- as to not collide with the standard diff program.
189
- * Fixed issues with RubyGems. Requires RubyGems > 0.6.1 or >= 0.6.1 with the
190
- latest CVS version.
340
+ - Minor modifications to the gemspec, the README.
341
+
342
+ - Renamed the diff program to ldiff (as well as the companion batch file) so as
343
+ to not collide with the standard diff program.
344
+
345
+ - Fixed issues with RubyGems. Requires RubyGems > 0.6.1 or >= 0.6.1 with the
346
+ latest CVS version.
191
347
 
192
348
  ## 1.0
193
349
 
194
- * Initial release based mostly on Perl's Algorithm::Diff.
350
+ - Initial release based mostly on Perl's Algorithm::Diff.
195
351
 
196
352
  [rubinius/rubinius#2268]: https://github.com/rubinius/rubinius/issues/2268
197
353
  [rspec/rspec-expectations#239]: https://github.com/rspec/rspec-expectations/issues/239
@@ -199,22 +355,46 @@
199
355
  [rspec/rspec-expectations#219]: https://github.com/rspec/rspec-expectations/issues/219
200
356
  [rspec/rspec-expectations@3d6fc82c]: https://github.com/rspec/rspec-expectations/commit/3d6fc82c
201
357
  [rspec/rspec-expectations#200]: https://github.com/rspec/rspec-expectations/pull/200
202
- [pull request #36]: https://github.com/halostatue/diff-lcs/pull/36
203
- [pull request #34]: https://github.com/halostatue/diff-lcs/pull/34
204
- [pull request #29]: https://github.com/halostatue/diff-lcs/pull/29
205
- [pull request #25]: https://github.com/halostatue/diff-lcs/pull/25
206
- [pull request #23]: https://github.com/halostatue/diff-lcs/pull/23
207
- [pull request #18]: https://github.com/halostatue/diff-lcs/pull/18
208
- [pull request #15]: https://github.com/halostatue/diff-lcs/pull/15
209
- [pull request #13]: https://github.com/halostatue/diff-lcs/pull/13
210
- [pull request #10]: https://github.com/halostatue/diff-lcs/pull/10
211
- [pull request #9]: https://github.com/halostatue/diff-lcs/pull/9
212
- [pull request #8]: https://github.com/halostatue/diff-lcs/pull/8
213
- [issue #38]: https://github.com/halostatue/diff-lcs/issues/38
214
- [issue #33]: https://github.com/halostatue/diff-lcs/issues/33
215
- [issue #21]: https://github.com/halostatue/diff-lcs/issues/21
216
- [issue #12]: https://github.com/halostatue/diff-lcs/issues/12
217
- [issue #4]: https://github.com/halostatue/diff-lcs/issues/4
218
- [issue #3]: https://github.com/halostatue/diff-lcs/issues/3
219
- [issue #2]: https://github.com/halostatue/diff-lcs/issues/2
220
- [issue #1]: https://github.com/halostatue/diff-lcs/issues/1
358
+ [#1]: https://github.com/halostatue/diff-lcs/issues/1
359
+ [#2]: https://github.com/halostatue/diff-lcs/issues/2
360
+ [#3]: https://github.com/halostatue/diff-lcs/issues/3
361
+ [#4]: https://github.com/halostatue/diff-lcs/issues/4
362
+ [#5]: https://github.com/halostatue/diff-lcs/issues/5
363
+ [#6]: https://github.com/halostatue/diff-lcs/issues/6
364
+ [#8]: https://github.com/halostatue/diff-lcs/pull/8
365
+ [#9]: https://github.com/halostatue/diff-lcs/pull/9
366
+ [#10]: https://github.com/halostatue/diff-lcs/pull/10
367
+ [#12]: https://github.com/halostatue/diff-lcs/issues/12
368
+ [#13]: https://github.com/halostatue/diff-lcs/pull/13
369
+ [#15]: https://github.com/halostatue/diff-lcs/pull/15
370
+ [#18]: https://github.com/halostatue/diff-lcs/pull/18
371
+ [#21]: https://github.com/halostatue/diff-lcs/issues/21
372
+ [#23]: https://github.com/halostatue/diff-lcs/pull/23
373
+ [#25]: https://github.com/halostatue/diff-lcs/pull/25
374
+ [#29]: https://github.com/halostatue/diff-lcs/pull/29
375
+ [#33]: https://github.com/halostatue/diff-lcs/issues/33
376
+ [#34]: https://github.com/halostatue/diff-lcs/pull/34
377
+ [#35]: https://github.com/halostatue/diff-lcs/issues/35
378
+ [#36]: https://github.com/halostatue/diff-lcs/pull/36
379
+ [#38]: https://github.com/halostatue/diff-lcs/issues/38
380
+ [#43]: https://github.com/halostatue/diff-lcs/issues/43
381
+ [#44]: https://github.com/halostatue/diff-lcs/issues/44
382
+ [#47]: https://github.com/halostatue/diff-lcs/pull/47
383
+ [#48]: https://github.com/halostatue/diff-lcs/issues/48
384
+ [#49]: https://github.com/halostatue/diff-lcs/pull/49
385
+ [#52]: https://github.com/halostatue/diff-lcs/pull/52
386
+ [#53]: https://github.com/halostatue/diff-lcs/issues/53
387
+ [#57]: https://github.com/halostatue/diff-lcs/issues/57
388
+ [#58]: https://github.com/halostatue/diff-lcs/pull/58
389
+ [#59]: https://github.com/halostatue/diff-lcs/pull/59
390
+ [#60]: https://github.com/halostatue/diff-lcs/issues/60
391
+ [#61]: https://github.com/halostatue/diff-lcs/pull/61
392
+ [#63]: https://github.com/halostatue/diff-lcs/issues/63
393
+ [#65]: https://github.com/halostatue/diff-lcs/issues/65
394
+ [#69]: https://github.com/halostatue/diff-lcs/issues/69
395
+ [#71]: https://github.com/halostatue/diff-lcs/issues/71
396
+ [#72]: https://github.com/halostatue/diff-lcs/issues/72
397
+ [#73]: https://github.com/halostatue/diff-lcs/issues/73
398
+ [#75]: https://github.com/halostatue/diff-lcs/issues/75
399
+ [#79]: https://github.com/halostatue/diff-lcs/issues/79
400
+ [#80]: https://github.com/halostatue/diff-lcs/issues/80
data/Manifest.txt CHANGED
@@ -6,7 +6,6 @@ License.md
6
6
  Manifest.txt
7
7
  README.rdoc
8
8
  Rakefile
9
- autotest/discover.rb
10
9
  bin/htmldiff
11
10
  bin/ldiff
12
11
  docs/COPYING.txt
@@ -14,6 +13,7 @@ docs/artistic.txt
14
13
  lib/diff-lcs.rb
15
14
  lib/diff/lcs.rb
16
15
  lib/diff/lcs/array.rb
16
+ lib/diff/lcs/backports.rb
17
17
  lib/diff/lcs/block.rb
18
18
  lib/diff/lcs/callbacks.rb
19
19
  lib/diff/lcs/change.rb
@@ -24,8 +24,30 @@ lib/diff/lcs/ldiff.rb
24
24
  lib/diff/lcs/string.rb
25
25
  spec/change_spec.rb
26
26
  spec/diff_spec.rb
27
+ spec/fixtures/aX
28
+ spec/fixtures/bXaX
27
29
  spec/fixtures/ds1.csv
28
30
  spec/fixtures/ds2.csv
31
+ spec/fixtures/ldiff/output.diff
32
+ spec/fixtures/ldiff/output.diff-c
33
+ spec/fixtures/ldiff/output.diff-e
34
+ spec/fixtures/ldiff/output.diff-f
35
+ spec/fixtures/ldiff/output.diff-u
36
+ spec/fixtures/ldiff/output.diff.chef
37
+ spec/fixtures/ldiff/output.diff.chef-c
38
+ spec/fixtures/ldiff/output.diff.chef-e
39
+ spec/fixtures/ldiff/output.diff.chef-f
40
+ spec/fixtures/ldiff/output.diff.chef-u
41
+ spec/fixtures/ldiff/output.diff.chef2
42
+ spec/fixtures/ldiff/output.diff.chef2-c
43
+ spec/fixtures/ldiff/output.diff.chef2-d
44
+ spec/fixtures/ldiff/output.diff.chef2-e
45
+ spec/fixtures/ldiff/output.diff.chef2-f
46
+ spec/fixtures/ldiff/output.diff.chef2-u
47
+ spec/fixtures/new-chef
48
+ spec/fixtures/new-chef2
49
+ spec/fixtures/old-chef
50
+ spec/fixtures/old-chef2
29
51
  spec/hunk_spec.rb
30
52
  spec/issues_spec.rb
31
53
  spec/lcs_spec.rb
data/README.rdoc CHANGED
@@ -4,8 +4,7 @@ home :: https://github.com/halostatue/diff-lcs
4
4
  code :: https://github.com/halostatue/diff-lcs
5
5
  bugs :: https://github.com/halostatue/diff-lcs/issues
6
6
  rdoc :: http://rubydoc.info/github/halostatue/diff-lcs
7
- continuous integration :: {<img src="https://travis-ci.org/halostatue/diff-lcs.svg" />}[https://travis-ci.org/halostatue/diff-lcs]
8
- test coverage :: {<img src="https://coveralls.io/repos/halostatue/diff-lcs/badge.svg" alt="Coverage Status" />}[https://coveralls.io/r/halostatue/diff-lcs]
7
+ continuous integration :: {<img src="https://github.com/halostatue/diff-lcs/workflows/CI/badge.svg" />}[https://github.com/halostatue/diff-lcs/actions]
9
8
 
10
9
  == Description
11
10
 
@@ -13,10 +12,15 @@ Diff::LCS computes the difference between two Enumerable sequences using the
13
12
  McIlroy-Hunt longest common subsequence (LCS) algorithm. It includes utilities
14
13
  to create a simple HTML diff output format and a standard diff-like tool.
15
14
 
16
- This is release 1.3, providing a tentative fix to a long-standing issue related
17
- to incorrect detection of a patch direction. Also modernizes the gem
18
- infrastructure, testing infrastructure, and provides a warning-free experience
19
- to Ruby 2.4 users.
15
+ This is release 1.4.3, providing a simple extension that allows for
16
+ Diff::LCS::Change objects to be treated implicitly as arrays and fixes a
17
+ number of formatting issues.
18
+
19
+ Ruby versions below 2.5 are soft-deprecated, which means that older versions
20
+ are no longer part of the CI test suite. If any changes have been introduced
21
+ that break those versions, bug reports and patches will be accepted, but it
22
+ will be up to the reporter to verify any fixes prior to release. The next
23
+ major release will completely break compatibility.
20
24
 
21
25
  == Synopsis
22
26
 
@@ -78,7 +82,3 @@ The algorithm is described in <em>A Fast Algorithm for Computing Longest Common
78
82
  Subsequences</em>, CACM, vol.20, no.5, pp.350-353, May 1977, with a few minor
79
83
  improvements to improve the speed. A simplified description of the algorithm,
80
84
  originally written for the Perl version, was written by Mark-Jason Dominus.
81
-
82
- :include: Contributing.rdoc
83
-
84
- :include: License.rdoc