diff-lcs 1.5.1 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/Code-of-Conduct.md DELETED
@@ -1,74 +0,0 @@
1
- # Contributor Covenant Code of Conduct
2
-
3
- ## Our Pledge
4
-
5
- In the interest of fostering an open and welcoming environment, we as
6
- contributors and maintainers pledge to making participation in our project and
7
- our community a harassment-free experience for everyone, regardless of age, body
8
- size, disability, ethnicity, gender identity and expression, level of experience,
9
- nationality, personal appearance, race, religion, or sexual identity and
10
- orientation.
11
-
12
- ## Our Standards
13
-
14
- Examples of behavior that contributes to creating a positive environment
15
- include:
16
-
17
- * Using welcoming and inclusive language
18
- * Being respectful of differing viewpoints and experiences
19
- * Gracefully accepting constructive criticism
20
- * Focusing on what is best for the community
21
- * Showing empathy towards other community members
22
-
23
- Examples of unacceptable behavior by participants include:
24
-
25
- * The use of sexualized language or imagery and unwelcome sexual attention or
26
- advances
27
- * Trolling, insulting/derogatory comments, and personal or political attacks
28
- * Public or private harassment
29
- * Publishing others' private information, such as a physical or electronic
30
- address, without explicit permission
31
- * Other conduct which could reasonably be considered inappropriate in a
32
- professional setting
33
-
34
- ## Our Responsibilities
35
-
36
- Project maintainers are responsible for clarifying the standards of acceptable
37
- behavior and are expected to take appropriate and fair corrective action in
38
- response to any instances of unacceptable behavior.
39
-
40
- Project maintainers have the right and responsibility to remove, edit, or
41
- reject comments, commits, code, wiki edits, issues, and other contributions
42
- that are not aligned to this Code of Conduct, or to ban temporarily or
43
- permanently any contributor for other behaviors that they deem inappropriate,
44
- threatening, offensive, or harmful.
45
-
46
- ## Scope
47
-
48
- This Code of Conduct applies both within project spaces and in public spaces
49
- when an individual is representing the project or its community. Examples of
50
- representing a project or community include using an official project e-mail
51
- address, posting via an official social media account, or acting as an appointed
52
- representative at an online or offline event. Representation of a project may be
53
- further defined and clarified by project maintainers.
54
-
55
- ## Enforcement
56
-
57
- Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
- reported by contacting the project team at [INSERT EMAIL ADDRESS]. All
59
- complaints will be reviewed and investigated and will result in a response that
60
- is deemed necessary and appropriate to the circumstances. The project team is
61
- obligated to maintain confidentiality with regard to the reporter of an incident.
62
- Further details of specific enforcement policies may be posted separately.
63
-
64
- Project maintainers who do not follow or enforce the Code of Conduct in good
65
- faith may face temporary or permanent repercussions as determined by other
66
- members of the project's leadership.
67
-
68
- ## Attribution
69
-
70
- This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
- available at [http://contributor-covenant.org/version/1/4][version]
72
-
73
- [homepage]: http://contributor-covenant.org
74
- [version]: http://contributor-covenant.org/version/1/4/
data/History.md DELETED
@@ -1,431 +0,0 @@
1
- # History
2
-
3
- ## 1.5.1 / 2024-01-31
4
-
5
- - Peter Goldstein updated CI configuration to add Ruby 3.1 and Masato Nakamura
6
- added Ruby 3.2 and 3.3. [#82][], [#89][]
7
-
8
- - Updated the CI configuration, resolving [#82][] to add Ruby 3.1. Masato
9
-
10
- - Switched to [standard ruby][] formatting.
11
-
12
- - Justin Steele converted the licence file to Markdown. [#84][]
13
-
14
- - Updated the gem SPDX identifier for GPL 2.0 or later, resolving [#86][] by Vit
15
- Ondruch.
16
-
17
- - Resolve a potential security issue with `ldiff` in its use of `IO.read`
18
- instead of `File.read`. [#91][]
19
-
20
- - Added MFA authentication requirement for release to RubyGems. [#90][]
21
-
22
- - Added dependabot management for actions and gems. [#90][]
23
-
24
- - Updated CodeQL coniguration. [#90][]
25
-
26
- ## 1.5.0 / 2021-12-23
27
-
28
- - Updated the CI configuration and monkey-patch Hoe.
29
-
30
- - Kenichi Kamiya fixed a test configuration deprecation in SimpleCov. [#69][]
31
-
32
- - Tien introduced several corrections and code improvements:
33
-
34
- - Removed an off-by-one error when calculating an index value by embracing
35
- Ruby iteration properly. This had a side-effect of fixing a long-standing
36
- bug in `#traverse_sequences` where the traversal would not be transitive.
37
- That is, `LCS(s2, s1)` should produce a sequence that is transitive with
38
- `LCS(s1, s2)` on traversal, and applying the diff computed from those
39
- results would result in equivalent changes that could be played forward or
40
- backward as appropriate. [#71][], [#75][]
41
-
42
- - The above fix resulted in a changed order of the longest common subsequence
43
- when callbacks were applied. After analysis, it was determined that the
44
- computed subsequence was _equivalent_ to the prior version, so the test was
45
- updated. This also resulted in the clarification of documentation when
46
- traversing the subsequences. [#79][]
47
-
48
- - An infinite loop case in the case where Diff::LCS would be included into an
49
- enumerable class has been fixed. [#73][]
50
-
51
- - Clarified the purpose of a threshold test in calculation of LCS. [#72][],
52
- [#80][]
53
-
54
- - Removed autotest directory
55
-
56
- ## 1.4.4 / 2020-07-01
57
-
58
- - Fixed an issue reported by Jun Aruga in the Diff::LCS::Ldiff binary text
59
- detection. [#44][]
60
-
61
- - Fixed a theoretical issue reported by Jun Aruga in Diff::LCS::Hunk to raise
62
- a more useful exception. [#43][]
63
-
64
- - Added documentation that should address custom object issues as reported in
65
- [#35][].
66
-
67
- - Fixed more diff errors, in part reported in [#65][].
68
-
69
- - The use of `Numeric#abs` is incorrect in `Diff::LCS::Block#diff_size`. The
70
- diff size _must_ be accurate for correct change placement.
71
-
72
- - When selecting @max_diff_size in Diff::LCS::Hunk, choose it based on
73
- `block.diff_size.abs`.
74
-
75
- - Made a number of changes that will, unfortunately, increase allocations at
76
- the cost of being safe with frozen strings.
77
-
78
- - Add some knowledge that when `Diff::LCS::Hunk#diff` is called, that we are
79
- processing the _last_ hunk, so some changes will be made to how the output
80
- is generated.
81
-
82
- - `old`, `ed`, and `reverse_ed` formats have no differences.
83
-
84
- - `unified` format will report `` given the
85
- correct conditions, at most once. Unified range reporting also differs for
86
- the last hunk such that the `length` of the range is reduced by one.
87
-
88
- - `context` format will report `\No newline at end of file` given the
89
- correct conditions, up to once per "file". Context range reporting also
90
- differs for the last hunk such that the `end` part of the range is reduced
91
- by one to a minimum of one.
92
-
93
- - Added a bunch more tests for the cases above, and fixed `hunk_spec.rb` so that
94
- the phrase being compared isn't nonsense French.
95
-
96
- - Updated formatting.
97
-
98
- - Added a Rake task to assist with manual testing on Ruby 1.8.
99
-
100
- ## 1.4.3 / 2020-06-29
101
-
102
- - Fixed several issues with the 1.4 on Rubies older than 2.0. Some of this was
103
- providing useful shim functions to Hoe 3.x (which dropped these older Rubies
104
- a while ago). Specifically:
105
-
106
- - Removed Array#lazy from a method in Diff::LCS::Hunk.
107
-
108
- - Changed some unit tests to use old-style Symbol-keyed hashes.
109
-
110
- - Changed some unit test helper functions to no longer use keyword parameters,
111
- but only a trailing options hash.
112
-
113
- - Made the use of `psych` dependent on `RUBY_VERSION >= 1.9`.
114
-
115
- Resolves [#63][].
116
-
117
- ## 1.4.2 / 2020-06-23
118
-
119
- - Camille Drapier fixed a small issue with RuboCop configuration. [#59][]
120
-
121
- - Applied another fix (and unit test) to fix an issue for the Chef team.
122
- [#60][], [#61][]
123
-
124
- ## 1.4.1 / 2020-06-23
125
-
126
- - Fix an issue where diff sizes could be negative, and they should be. [#57][],
127
- [#58][]
128
-
129
- ## 1.4 / 2020-06-23
130
-
131
- - Ruby versions lower than 2.4 are soft-deprecated and will not be run as part
132
- of the CI process any longer.
133
-
134
- - Akinora MUSHA (knu) added the ability for Diff::LCS::Change objects to be
135
- implicitly treated arrays. Originally provided as pull request [#47][], but it
136
- introduced a number of test failures as documented in [#48][], and remediation
137
- of Diff::LCS itself was introduced in [#49][].
138
-
139
- - Resolved [#5][] with some tests comparing output from `system` calls to
140
- `bin/ldiff` with some pre-generated output. Resolved [#6][] with these tests.
141
-
142
- - Resolved a previously undetected `bin/ldiff` issue with `--context` output not
143
- matching `diff --context` output.
144
-
145
- - Resolved an issue with later versions of Ruby not working with an `OptParse`
146
- specification of `Numeric`; this has been changed to `Integer`.
147
-
148
- - Brandon Fish added truffleruby in [#52][].
149
-
150
- - Fixed two missing classes as reported in [#53][].
151
-
152
- ## 1.3 / 2017-01-18
153
-
154
- - Bugs fixed:
155
-
156
- - Fixed an error for bin/ldiff --version. Fixes issue [#21][].
157
-
158
- - Force Diff::LCS::Change and Diff::LCS::ContextChange to only perform
159
- equality comparisons against themselves. Provided by Kevin Mook in pull
160
- request [#29][].
161
-
162
- - Fix tab expansion in htmldiff, provided by Mark Friedgan in pull request
163
- [#25][].
164
-
165
- - Silence Ruby 2.4 Fixnum deprecation warnings. Fixes issue [#38][] and pull
166
- request [#36][].
167
-
168
- - Ensure that test dependencies are loaded properly. Fixes issue [#33][] and
169
- pull request [#34][].
170
-
171
- - Fix issue [#1][] with incorrect intuition of patch direction. Tentative fix,
172
- but the previous failure cases pass now.
173
-
174
- - Tooling changes:
175
-
176
- - Added SimpleCov and Coveralls support.
177
-
178
- - Change the homepage (temporarily) to the GitHub repo.
179
-
180
- - Updated testing and gem infrastructure.
181
-
182
- - Modernized the specs.
183
-
184
- - Cleaned up documentation.
185
-
186
- - Added a Code of Conduct.
187
-
188
- ## 1.2.5 / 2013-11-08
189
-
190
- - Bugs fixed:
191
-
192
- - Comparing arrays flattened them too far, especially with Diff::LCS.sdiff.
193
- Fixed by Josh Bronson in pull request [#23][].
194
-
195
- ## 1.2.4 / 2013-04-20
196
-
197
- - Bugs fixed:
198
-
199
- - A bug was introduced after 1.1.3 when pruning common sequences at the start
200
- of comparison. Paul Kunysch (@pck) fixed this in pull request [#18][].
201
- Thanks!
202
-
203
- - The Rubinius (1.9 mode) bug in [rubinius/rubinius#2268][] has been fixed by
204
- the Rubinius team two days after it was filed. Thanks for fixing this so
205
- quickly!
206
-
207
- - Switching to Raggi's hoe-gemspec2 for gemspec generation.
208
-
209
- ## 1.2.3 / 2013-04-11
210
-
211
- - Bugs Fixed:
212
-
213
- - The new encoding detection for diff output generation (added in 1.2.2)
214
- introduced a bug if the left side of the comparison was the empty set.
215
- Originally found in [rspec/rspec-expectations#238][] and
216
- [rspec/rspec-expectations#239][]. Jon Rowe developed a reasonable heuristic
217
- (left side, right side, empty string literal) to avoid this bug.
218
-
219
- - There is a known issue with Rubinius in 1.9 mode reported in
220
- [rubinius/rubinius#2268][] and demonstrated in the Travis CI builds. For all
221
- other tested platforms, diff-lcs is considered stable. As soon as a suitably
222
- small test-case can be created for the Rubinius team to examine, this will
223
- be added to the Rubinius issue around this.
224
-
225
- ## 1.2.2 / 2013-03-30
226
-
227
- - Bugs Fixed:
228
-
229
- - Diff::LCS::Hunk could not properly generate a difference for comparison sets
230
- that are not US-ASCII-compatible because of the use of literal regular
231
- expressions and strings. Jon Rowe found this in
232
- [rspec/rspec-expectations#219][] and provided a first pass implementation in
233
- pull request [#15][]. I've reworked it because of test failures in Rubinius
234
- when running in Ruby 1.9 mode. This coerces the added values to the encoding
235
- of the old dataset (as determined by the first piece of the old dataset).
236
-
237
- - Adding Travis CI testing for Ruby 2.0.
238
-
239
- ## 1.2.1 / 2013-02-09
240
-
241
- - Bugs Fixed:
242
-
243
- - As seen in [rspec/rspec-expectations#200][], the release of Diff::LCS 1.2
244
- introduced an unnecessary public API change to Diff::LCS::Hunk (see the
245
- change at [rspec/rspec-expectations@3d6fc82c][] for details). The new method
246
- name (and behaviour) is more correct, but I should not have renamed the
247
- function or should have at least provided an alias. This release restores
248
- Diff::LCS::Hunk#unshift as an alias to #merge. Note that the old #unshift
249
- behaviour was incorrect and will not be restored.
250
-
251
- ## 1.2.0 / 2013-01-21
252
-
253
- - Minor Enhancements:
254
-
255
- - Added special case handling for Diff::LCS.patch so that it handles patches
256
- that are empty or contain no changes.
257
-
258
- - Added two new methods (#patch_me and #unpatch_me) to the includable module.
259
-
260
- - Bugs Fixed:
261
-
262
- - Fixed issue [#1][] patch direction detection.
263
-
264
- - Resolved issue [#2][] by handling `string[string.size, 1]` properly (it
265
- returns `""` not `nil`).
266
-
267
- - Michael Granger (ged) fixed an implementation error in Diff::LCS::Change and
268
- added specs in pull request [#8][]. Thanks!
269
-
270
- - Made the code auto-testable.
271
-
272
- - Vít Ondruch (voxik) provided the latest version of the GPL2 license file in
273
- pull request [#10][]. Thanks!
274
-
275
- - Fixed a documentation issue with the includable versions of #patch! and
276
- #unpatch! where they implied that they would replace the original value.
277
- Given that Diff::LCS.patch always returns a copy, the documentation was
278
- incorrect and has been corrected. To provide the behaviour that was
279
- originally documented, two new methods were added to provide this behaviour.
280
- Found by scooter-dangle in issue [#12][]. Thanks!
281
-
282
- - Code Style Changes:
283
-
284
- - Removed trailing spaces.
285
-
286
- - Calling class methods using `.` instead of `::`.
287
-
288
- - Vít Ondruch (voxik) removed unnecessary shebangs in pull request [#9][].
289
- Thanks!
290
-
291
- - Kenichi Kamiya (kachick) removed some warnings of an unused variable in
292
- lucky pull request [#13][]. Thanks!
293
-
294
- - Embarked on a major refactoring to make the files a little more manageable
295
- and understand the code on a deeper level.
296
-
297
- - Adding to http://travis-ci.org.
298
-
299
- ## 1.1.3 / 2011-08-27
300
-
301
- - Converted to 'hoe' for release.
302
-
303
- - Converted tests to RSpec 2.
304
-
305
- - Extracted the body of htmldiff into a class available from diff/lcs/htmldiff.
306
-
307
- - Migrated development and issue tracking to GitHub.
308
-
309
- - Bugs fixed:
310
-
311
- - Eliminated the explicit use of RubyGems in both bin/htmldiff and bin/ldiff.
312
- Resolves issue [#4][].
313
-
314
- - Eliminated Ruby warnings. Resolves issue [#3][].
315
-
316
- ## 1.1.2 / 2004-10-20
317
-
318
- - Fixed a problem reported by Mauricio Fernandez in htmldiff.
319
-
320
- ## 1.1.1 / 2004-09-25
321
-
322
- - Fixed bug #891 (Set returned from patch command does not contain last equal
323
- part).
324
-
325
- - Fixed a problem with callback initialisation code (it assumed that all
326
- callbacks passed as classes can be initialised; now, it rescues NoMethodError
327
- in the event of private :new being called).
328
-
329
- - Modified the non-initialisable callbacks to have a private #new method.
330
-
331
- - Moved ldiff core code to Diff::LCS::Ldiff (diff/lcs/ldiff.rb).
332
-
333
- ## 1.1.0
334
-
335
- - Eliminated the need for Diff::LCS::Event and removed it.
336
-
337
- - Added a contextual diff callback, Diff::LCS::ContextDiffCallback.
338
-
339
- - Implemented patching/unpatching for standard Diff callback output formats with
340
- both #diff and #sdiff.
341
-
342
- - Extensive documentation changes.
343
-
344
- ## 1.0.4
345
-
346
- - Fixed a problem with bin/ldiff output, especially for unified format. Newlines
347
- that should have been present weren't.
348
-
349
- - Changed the .tar.gz installer to generate Windows batch files if ones do not
350
- exist already. Removed the existing batch files as they didn't work.
351
-
352
- ## 1.0.3
353
-
354
- - Fixed a problem with #traverse_sequences where the first difference from the
355
- left sequence might not be appropriately captured.
356
-
357
- ## 1.0.2
358
-
359
- - Fixed an issue with ldiff not working because actions were changed from
360
- symbols to strings.
361
-
362
- ## 1.0.1
363
-
364
- - Minor modifications to the gemspec, the README.
365
-
366
- - Renamed the diff program to ldiff (as well as the companion batch file) so as
367
- to not collide with the standard diff program.
368
-
369
- - Fixed issues with RubyGems. Requires RubyGems > 0.6.1 or >= 0.6.1 with the
370
- latest CVS version.
371
-
372
- ## 1.0
373
-
374
- - Initial release based mostly on Perl's Algorithm::Diff.
375
-
376
- [#1]: https://github.com/halostatue/diff-lcs/issues/1
377
- [#2]: https://github.com/halostatue/diff-lcs/issues/2
378
- [#3]: https://github.com/halostatue/diff-lcs/issues/3
379
- [#4]: https://github.com/halostatue/diff-lcs/issues/4
380
- [#5]: https://github.com/halostatue/diff-lcs/issues/5
381
- [#6]: https://github.com/halostatue/diff-lcs/issues/6
382
- [#8]: https://github.com/halostatue/diff-lcs/pull/8
383
- [#9]: https://github.com/halostatue/diff-lcs/pull/9
384
- [#10]: https://github.com/halostatue/diff-lcs/pull/10
385
- [#12]: https://github.com/halostatue/diff-lcs/issues/12
386
- [#13]: https://github.com/halostatue/diff-lcs/pull/13
387
- [#15]: https://github.com/halostatue/diff-lcs/pull/15
388
- [#18]: https://github.com/halostatue/diff-lcs/pull/18
389
- [#21]: https://github.com/halostatue/diff-lcs/issues/21
390
- [#23]: https://github.com/halostatue/diff-lcs/pull/23
391
- [#25]: https://github.com/halostatue/diff-lcs/pull/25
392
- [#29]: https://github.com/halostatue/diff-lcs/pull/29
393
- [#33]: https://github.com/halostatue/diff-lcs/issues/33
394
- [#34]: https://github.com/halostatue/diff-lcs/pull/34
395
- [#35]: https://github.com/halostatue/diff-lcs/issues/35
396
- [#36]: https://github.com/halostatue/diff-lcs/pull/36
397
- [#38]: https://github.com/halostatue/diff-lcs/issues/38
398
- [#43]: https://github.com/halostatue/diff-lcs/issues/43
399
- [#44]: https://github.com/halostatue/diff-lcs/issues/44
400
- [#47]: https://github.com/halostatue/diff-lcs/pull/47
401
- [#48]: https://github.com/halostatue/diff-lcs/issues/48
402
- [#49]: https://github.com/halostatue/diff-lcs/pull/49
403
- [#52]: https://github.com/halostatue/diff-lcs/pull/52
404
- [#53]: https://github.com/halostatue/diff-lcs/issues/53
405
- [#57]: https://github.com/halostatue/diff-lcs/issues/57
406
- [#58]: https://github.com/halostatue/diff-lcs/pull/58
407
- [#59]: https://github.com/halostatue/diff-lcs/pull/59
408
- [#60]: https://github.com/halostatue/diff-lcs/issues/60
409
- [#61]: https://github.com/halostatue/diff-lcs/pull/61
410
- [#63]: https://github.com/halostatue/diff-lcs/issues/63
411
- [#65]: https://github.com/halostatue/diff-lcs/issues/65
412
- [#69]: https://github.com/halostatue/diff-lcs/issues/69
413
- [#71]: https://github.com/halostatue/diff-lcs/issues/71
414
- [#72]: https://github.com/halostatue/diff-lcs/issues/72
415
- [#73]: https://github.com/halostatue/diff-lcs/issues/73
416
- [#75]: https://github.com/halostatue/diff-lcs/issues/75
417
- [#79]: https://github.com/halostatue/diff-lcs/issues/79
418
- [#80]: https://github.com/halostatue/diff-lcs/issues/80
419
- [#82]: https://github.com/halostatue/diff-lcs/pull/82
420
- [#84]: https://github.com/halostatue/diff-lcs/pull/84
421
- [#86]: https://github.com/halostatue/diff-lcs/pull/86
422
- [#89]: https://github.com/halostatue/diff-lcs/pull/89
423
- [#90]: https://github.com/halostatue/diff-lcs/pull/90
424
- [#91]: https://github.com/halostatue/diff-lcs/issues/91
425
- [rspec/rspec-expectations#200]: https://github.com/rspec/rspec-expectations/pull/200
426
- [rspec/rspec-expectations#219]: https://github.com/rspec/rspec-expectations/issues/219
427
- [rspec/rspec-expectations#238]: https://github.com/rspec/rspec-expectations/issues/238
428
- [rspec/rspec-expectations#239]: https://github.com/rspec/rspec-expectations/issues/239
429
- [rspec/rspec-expectations@3d6fc82c]: https://github.com/rspec/rspec-expectations/commit/3d6fc82c
430
- [rubinius/rubinius#2268]: https://github.com/rubinius/rubinius/issues/2268
431
- [standard ruby]: https://github.com/standardrb/standard
data/README.rdoc DELETED
@@ -1,84 +0,0 @@
1
- = Diff::LCS
2
-
3
- home :: https://github.com/halostatue/diff-lcs
4
- code :: https://github.com/halostatue/diff-lcs
5
- bugs :: https://github.com/halostatue/diff-lcs/issues
6
- rdoc :: http://rubydoc.info/github/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]
8
-
9
- == Description
10
-
11
- Diff::LCS computes the difference between two Enumerable sequences using the
12
- McIlroy-Hunt longest common subsequence (LCS) algorithm. It includes utilities
13
- to create a simple HTML diff output format and a standard diff-like tool.
14
-
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.
24
-
25
- == Synopsis
26
-
27
- Using this module is quite simple. By default, Diff::LCS does not extend
28
- objects with the Diff::LCS interface, but will be called as if it were a
29
- function:
30
-
31
- require 'diff/lcs'
32
-
33
- seq1 = %w(a b c e h j l m n p)
34
- seq2 = %w(b c d e f j k l m r s t)
35
-
36
- lcs = Diff::LCS.LCS(seq1, seq2)
37
- diffs = Diff::LCS.diff(seq1, seq2)
38
- sdiff = Diff::LCS.sdiff(seq1, seq2)
39
- seq = Diff::LCS.traverse_sequences(seq1, seq2, callback_obj)
40
- bal = Diff::LCS.traverse_balanced(seq1, seq2, callback_obj)
41
- seq2 == Diff::LCS.patch!(seq1, diffs)
42
- seq1 == Diff::LCS.unpatch!(seq2, diffs)
43
- seq2 == Diff::LCS.patch!(seq1, sdiff)
44
- seq1 == Diff::LCS.unpatch!(seq2, sdiff)
45
-
46
- Objects can be extended with Diff::LCS:
47
-
48
- seq1.extend(Diff::LCS)
49
- lcs = seq1.lcs(seq2)
50
- diffs = seq1.diff(seq2)
51
- sdiff = seq1.sdiff(seq2)
52
- seq = seq1.traverse_sequences(seq2, callback_obj)
53
- bal = seq1.traverse_balanced(seq2, callback_obj)
54
- seq2 == seq1.patch!(diffs)
55
- seq1 == seq2.unpatch!(diffs)
56
- seq2 == seq1.patch!(sdiff)
57
- seq1 == seq2.unpatch!(sdiff)
58
-
59
- By requiring 'diff/lcs/array' or 'diff/lcs/string', Array or String will be
60
- extended for use this way.
61
-
62
- Note that Diff::LCS requires a sequenced enumerable container, which means that
63
- the order of enumeration is both predictable and consistent for the same set of
64
- data. While it is theoretically possible to generate a diff for an unordered
65
- hash, it will only be meaningful if the enumeration of the hashes is
66
- consistent. In general, this will mean that containers that behave like String
67
- or Array will perform best.
68
-
69
- == History
70
-
71
- Diff::LCS is a port of Perl's Algorithm::Diff that uses the McIlroy-Hunt
72
- longest common subsequence (LCS) algorithm to compute intelligent differences
73
- between two sequenced enumerable containers. The implementation is based on
74
- Mario I. Wolczko's
75
- {Smalltalk version 1.2}[ftp://st.cs.uiuc.edu/pub/Smalltalk/MANCHESTER/manchester/4.0/diff.st]
76
- (1993) and Ned Konz's Perl version
77
- {Algorithm::Diff 1.15}[http://search.cpan.org/~nedkonz/Algorithm-Diff-1.15/].
78
- Diff::LCS#sdiff and Diff::LCS#traverse_balanced were originally written for the
79
- Perl version by Mike Schilli.
80
-
81
- The algorithm is described in <em>A Fast Algorithm for Computing Longest Common
82
- Subsequences</em>, CACM, vol.20, no.5, pp.350-353, May 1977, with a few minor
83
- improvements to improve the speed. A simplified description of the algorithm,
84
- originally written for the Perl version, was written by Mark-Jason Dominus.
File without changes