diff-lcs 1.2.2 → 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.
Files changed (55) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +0 -1
  3. data/Code-of-Conduct.md +74 -0
  4. data/Contributing.md +84 -0
  5. data/History.md +247 -0
  6. data/{License.rdoc → License.md} +0 -0
  7. data/Manifest.txt +15 -9
  8. data/README.rdoc +21 -18
  9. data/Rakefile +35 -23
  10. data/autotest/discover.rb +3 -1
  11. data/bin/htmldiff +7 -4
  12. data/bin/ldiff +4 -1
  13. data/lib/diff-lcs.rb +1 -1
  14. data/lib/diff/lcs.rb +181 -254
  15. data/lib/diff/lcs/array.rb +1 -1
  16. data/lib/diff/lcs/backports.rb +9 -0
  17. data/lib/diff/lcs/block.rb +1 -1
  18. data/lib/diff/lcs/callbacks.rb +15 -12
  19. data/lib/diff/lcs/change.rb +34 -37
  20. data/lib/diff/lcs/htmldiff.rb +17 -16
  21. data/lib/diff/lcs/hunk.rb +59 -47
  22. data/lib/diff/lcs/internals.rb +44 -40
  23. data/lib/diff/lcs/ldiff.rb +45 -65
  24. data/lib/diff/lcs/string.rb +1 -1
  25. data/spec/change_spec.rb +31 -7
  26. data/spec/diff_spec.rb +28 -18
  27. data/spec/fixtures/aX +1 -0
  28. data/spec/fixtures/bXaX +1 -0
  29. data/spec/fixtures/ds1.csv +50 -0
  30. data/spec/fixtures/ds2.csv +51 -0
  31. data/spec/fixtures/ldiff/output.diff +4 -0
  32. data/spec/fixtures/ldiff/output.diff-c +7 -0
  33. data/spec/fixtures/ldiff/output.diff-e +3 -0
  34. data/spec/fixtures/ldiff/output.diff-f +3 -0
  35. data/spec/fixtures/ldiff/output.diff-u +5 -0
  36. data/spec/hunk_spec.rb +54 -45
  37. data/spec/issues_spec.rb +50 -17
  38. data/spec/lcs_spec.rb +24 -22
  39. data/spec/ldiff_spec.rb +72 -0
  40. data/spec/patch_spec.rb +182 -180
  41. data/spec/sdiff_spec.rb +99 -87
  42. data/spec/spec_helper.rb +141 -58
  43. data/spec/traverse_balanced_spec.rb +177 -177
  44. data/spec/traverse_sequences_spec.rb +63 -63
  45. metadata +100 -169
  46. data.tar.gz.sig +0 -0
  47. data/.autotest +0 -3
  48. data/.gemtest +0 -0
  49. data/.hoerc +0 -2
  50. data/.travis.yml +0 -22
  51. data/Contributing.rdoc +0 -64
  52. data/Gemfile +0 -19
  53. data/History.rdoc +0 -117
  54. data/diff-lcs.gemspec +0 -63
  55. metadata.gz.sig +0 -4
@@ -1,202 +1,214 @@
1
- # -*- ruby encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
2
 
3
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 "should compare s1 -> s2 correctly" do
10
- Diff::LCS.sdiff(s1, s2).should == context_diff(result)
8
+ shared_examples 'compare sequences correctly' do
9
+ it 'compares s1 -> s2 correctly' do
10
+ expect(Diff::LCS.sdiff(s1, s2)).to eq(context_diff(result))
11
11
  end
12
12
 
13
- it "should compare s2 -> s1 correctly" do
14
- Diff::LCS.sdiff(s2, s1).should == context_diff(reverse_sdiff(result))
13
+ it 'compares s2 -> s1 correctly' do
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
26
+ describe 'using %w(abc def yyy xxx ghi jkl) & %w(abc dxf xxx ghi jkl)' do
27
27
  let(:s1) { %w(abc def yyy xxx ghi jkl) }
28
28
  let(:s2) { %w(abc dxf xxx ghi jkl) }
29
29
  let(:result) {
30
30
  [
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' ] ]
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']]
37
37
  ]
38
38
  }
39
39
 
40
- it_has_behavior "compare sequences correctly"
40
+ it_has_behavior 'compare sequences correctly'
41
41
  end
42
42
 
43
- describe "using %w(a b c d e) & %w(a e)" do
43
+ describe 'using %w(a b c d e) & %w(a e)' do
44
44
  let(:s1) { %w(a b c d e) }
45
45
  let(:s2) { %w(a e) }
46
46
  let(:result) {
47
47
  [
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' ] ]
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']]
53
53
  ]
54
54
  }
55
55
 
56
- it_has_behavior "compare sequences correctly"
56
+ it_has_behavior 'compare sequences correctly'
57
57
  end
58
58
 
59
- describe "using %w(a e) & %w(a b c d e)" do
59
+ describe 'using %w(a e) & %w(a b c d e)' do
60
60
  let(:s1) { %w(a e) }
61
61
  let(:s2) { %w(a b c d e) }
62
62
  let(:result) {
63
63
  [
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' ] ]
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']]
69
69
  ]
70
70
  }
71
71
 
72
- it_has_behavior "compare sequences correctly"
72
+ it_has_behavior 'compare sequences correctly'
73
73
  end
74
74
 
75
- describe "using %w(v x a e) & %w(w y a b c d e)" do
75
+ describe 'using %w(v x a e) & %w(w y a b c d e)' do
76
76
  let(:s1) { %w(v x a e) }
77
77
  let(:s2) { %w(w y a b c d e) }
78
78
  let(:result) {
79
79
  [
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' ] ]
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']]
87
87
  ]
88
88
  }
89
89
 
90
- it_has_behavior "compare sequences correctly"
90
+ it_has_behavior 'compare sequences correctly'
91
91
  end
92
92
 
93
- describe "using %w(x a e) & %w(a b c d e)" do
93
+ describe 'using %w(x a e) & %w(a b c d e)' do
94
94
  let(:s1) { %w(x a e) }
95
95
  let(:s2) { %w(a b c d e) }
96
96
  let(:result) {
97
97
  [
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' ] ]
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']]
104
104
  ]
105
105
  }
106
106
 
107
- it_has_behavior "compare sequences correctly"
107
+ it_has_behavior 'compare sequences correctly'
108
108
  end
109
109
 
110
- describe "using %w(a e) & %w(x a b c d e)" do
110
+ describe 'using %w(a e) & %w(x a b c d e)' do
111
111
  let(:s1) { %w(a e) }
112
112
  let(:s2) { %w(x a b c d e) }
113
113
  let(:result) {
114
114
  [
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' ] ]
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']]
121
121
  ]
122
122
  }
123
123
 
124
- it_has_behavior "compare sequences correctly"
124
+ it_has_behavior 'compare sequences correctly'
125
125
  end
126
126
 
127
- describe "using %w(a e v) & %w(x a b c d e w x)" do
127
+ describe 'using %w(a e v) & %w(x a b c d e w x)' do
128
128
  let(:s1) { %w(a e v) }
129
129
  let(:s2) { %w(x a b c d e w x) }
130
130
  let(:result) {
131
131
  [
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' ] ]
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']]
140
140
  ]
141
141
  }
142
142
 
143
- it_has_behavior "compare sequences correctly"
143
+ it_has_behavior 'compare sequences correctly'
144
144
  end
145
145
 
146
- describe "using %w() & %w(a b c)" do
146
+ describe 'using %w() & %w(a b c)' do
147
147
  let(:s1) { %w() }
148
148
  let(:s2) { %w(a b c) }
149
149
  let(:result) {
150
150
  [
151
- [ '+', [ 0, nil ], [ 0, 'a' ] ],
152
- [ '+', [ 0, nil ], [ 1, 'b' ] ],
153
- [ '+', [ 0, nil ], [ 2, 'c' ] ]
151
+ ['+', [0, nil], [0, 'a']],
152
+ ['+', [0, nil], [1, 'b']],
153
+ ['+', [0, nil], [2, 'c']]
154
154
  ]
155
155
  }
156
156
 
157
- it_has_behavior "compare sequences correctly"
157
+ it_has_behavior 'compare sequences correctly'
158
158
  end
159
159
 
160
- describe "using %w(a b c) & %w(1)" do
160
+ describe 'using %w(a b c) & %w(1)' do
161
161
  let(:s1) { %w(a b c) }
162
162
  let(:s2) { %w(1) }
163
163
  let(:result) {
164
164
  [
165
- [ '!', [ 0, 'a' ], [ 0, '1' ] ],
166
- [ '-', [ 1, 'b' ], [ 1, nil ] ],
167
- [ '-', [ 2, 'c' ], [ 1, nil ] ]
165
+ ['!', [0, 'a'], [0, '1']],
166
+ ['-', [1, 'b'], [1, nil]],
167
+ ['-', [2, 'c'], [1, nil]]
168
168
  ]
169
169
  }
170
170
 
171
- it_has_behavior "compare sequences correctly"
171
+ it_has_behavior 'compare sequences correctly'
172
172
  end
173
173
 
174
- describe "using %w(a b c) & %w(c)" do
174
+ describe 'using %w(a b c) & %w(c)' do
175
175
  let(:s1) { %w(a b c) }
176
176
  let(:s2) { %w(c) }
177
177
  let(:result) {
178
178
  [
179
- [ '-', [ 0, 'a' ], [ 0, nil ] ],
180
- [ '-', [ 1, 'b' ], [ 0, nil ] ],
181
- [ '=', [ 2, 'c' ], [ 0, 'c' ] ]
179
+ ['-', [0, 'a'], [0, nil]],
180
+ ['-', [1, 'b'], [0, nil]],
181
+ ['=', [2, 'c'], [0, 'c']]
182
182
  ]
183
183
  }
184
184
 
185
- it_has_behavior "compare sequences correctly"
185
+ it_has_behavior 'compare sequences correctly'
186
186
  end
187
187
 
188
- describe "using %w(abcd efgh ijkl mnop) & []" do
188
+ describe 'using %w(abcd efgh ijkl mnop) & []' do
189
189
  let(:s1) { %w(abcd efgh ijkl mnop) }
190
190
  let(:s2) { [] }
191
191
  let(:result) {
192
192
  [
193
- [ '-', [ 0, 'abcd' ], [ 0, nil ] ],
194
- [ '-', [ 1, 'efgh' ], [ 0, nil ] ],
195
- [ '-', [ 2, 'ijkl' ], [ 0, nil ] ],
196
- [ '-', [ 3, 'mnop' ], [ 0, nil ] ]
193
+ ['-', [0, 'abcd'], [0, nil]],
194
+ ['-', [1, 'efgh'], [0, nil]],
195
+ ['-', [2, 'ijkl'], [0, nil]],
196
+ ['-', [3, 'mnop'], [0, nil]]
197
197
  ]
198
198
  }
199
199
 
200
- it_has_behavior "compare sequences correctly"
200
+ it_has_behavior 'compare sequences correctly'
201
+ end
202
+
203
+ describe 'using [[1,2]] & []' do
204
+ let(:s1) { [[1, 2]] }
205
+ let(:s2) { [] }
206
+ let(:result) {
207
+ [
208
+ ['-', [0, [1, 2]], [0, nil]]
209
+ ]
210
+ }
211
+
212
+ it_has_behavior 'compare sequences correctly'
201
213
  end
202
214
  end
@@ -1,7 +1,35 @@
1
- # -*- ruby encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
2
 
3
3
  require 'rubygems'
4
4
  require 'pathname'
5
+ require 'psych'
6
+
7
+ if ENV['COVERAGE']
8
+ require 'simplecov'
9
+
10
+ def require_do(resource)
11
+ require resource
12
+ yield if block_given?
13
+ rescue LoadError
14
+ nil
15
+ end
16
+
17
+ formatters = [SimpleCov::Formatter::HTMLFormatter]
18
+
19
+ require_do('simplecov-rcov') {
20
+ formatters << SimpleCov::Formatter::RcovFormatter
21
+ }
22
+ require_do('simplecov-vim/formatter') {
23
+ formatters << SimpleCov::Formatter::VimFormatter
24
+ }
25
+ require_do('simplecov-sublime-ruby-coverage') {
26
+ formatters << SimpleCov::Formatter::SublimeRubyCoverageFormatter
27
+ }
28
+
29
+ SimpleCov.start do
30
+ formatter SimpleCov::Formatter::MultiFormatter[*formatters]
31
+ end
32
+ end
5
33
 
6
34
  file = Pathname.new(__FILE__).expand_path
7
35
  path = file.parent
@@ -9,15 +37,47 @@ parent = path.parent
9
37
 
10
38
  $:.unshift parent.join('lib')
11
39
 
40
+ module CaptureSubprocessIO
41
+ def _synchronize
42
+ yield
43
+ end
44
+
45
+ def capture_subprocess_io
46
+ _synchronize do
47
+ begin
48
+ require 'tempfile'
49
+
50
+ captured_stdout, captured_stderr = Tempfile.new('out'), Tempfile.new('err')
51
+
52
+ orig_stdout, orig_stderr = $stdout.dup, $stderr.dup
53
+ $stdout.reopen captured_stdout
54
+ $stderr.reopen captured_stderr
55
+
56
+ yield
57
+
58
+ $stdout.rewind
59
+ $stderr.rewind
60
+
61
+ return captured_stdout.read, captured_stderr.read
62
+ ensure
63
+ captured_stdout.unlink
64
+ captured_stderr.unlink
65
+ $stdout.reopen orig_stdout
66
+ $stderr.reopen orig_stderr
67
+ end
68
+ end
69
+ end
70
+ end
71
+
12
72
  require 'diff-lcs'
13
73
 
14
74
  module Diff::LCS::SpecHelper
15
75
  def hello
16
- "hello"
76
+ 'hello'
17
77
  end
18
78
 
19
79
  def hello_ary
20
- %W(h e l l o)
80
+ %w(h e l l o)
21
81
  end
22
82
 
23
83
  def seq1
@@ -46,50 +106,69 @@ module Diff::LCS::SpecHelper
46
106
 
47
107
  def correct_forward_diff
48
108
  [
49
- [ [ '-', 0, 'a' ] ],
50
- [ [ '+', 2, 'd' ] ],
51
- [ [ '-', 4, 'h' ],
52
- [ '+', 4, 'f' ] ],
53
- [ [ '+', 6, 'k' ] ],
54
- [ [ '-', 8, 'n' ],
55
- [ '-', 9, 'p' ],
56
- [ '+', 9, 'r' ],
57
- [ '+', 10, 's' ],
58
- [ '+', 11, 't' ] ]
109
+ [
110
+ ['-', 0, 'a']
111
+ ],
112
+ [
113
+ ['+', 2, 'd']
114
+ ],
115
+ [
116
+ ['-', 4, 'h'],
117
+ ['+', 4, 'f']
118
+ ],
119
+ [
120
+ ['+', 6, 'k']
121
+ ],
122
+ [
123
+ ['-', 8, 'n'],
124
+ ['-', 9, 'p'],
125
+ ['+', 9, 'r'],
126
+ ['+', 10, 's'],
127
+ ['+', 11, 't']
128
+ ]
59
129
  ]
60
130
  end
61
131
 
62
132
  def correct_backward_diff
63
133
  [
64
- [ [ '+', 0, 'a' ] ],
65
- [ [ '-', 2, 'd' ] ],
66
- [ [ '-', 4, 'f' ],
67
- [ '+', 4, 'h' ] ],
68
- [ [ '-', 6, 'k' ] ],
69
134
  [
70
- [ '-', 9, 'r' ],
71
- [ '-', 10, 's' ],
72
- [ '+', 8, 'n' ],
73
- [ '-', 11, 't' ],
74
- [ '+', 9, 'p' ] ]
135
+ ['+', 0, 'a']
136
+ ],
137
+ [
138
+ ['-', 2, 'd']
139
+ ],
140
+ [
141
+ ['-', 4, 'f'],
142
+ ['+', 4, 'h']
143
+ ],
144
+ [
145
+ ['-', 6, 'k']
146
+ ],
147
+ [
148
+ ['-', 9, 'r'],
149
+ ['-', 10, 's'],
150
+ ['+', 8, 'n'],
151
+ ['-', 11, 't'],
152
+ ['+', 9, 'p']
153
+ ]
75
154
  ]
76
155
  end
77
156
 
78
157
  def correct_forward_sdiff
79
158
  [
80
- [ '-', [ 0, 'a' ], [ 0, nil ] ],
81
- [ '=', [ 1, 'b' ], [ 0, 'b' ] ],
82
- [ '=', [ 2, 'c' ], [ 1, 'c' ] ],
83
- [ '+', [ 3, nil ], [ 2, 'd' ] ],
84
- [ '=', [ 3, 'e' ], [ 3, 'e' ] ],
85
- [ '!', [ 4, 'h' ], [ 4, 'f' ] ],
86
- [ '=', [ 5, 'j' ], [ 5, 'j' ] ],
87
- [ '+', [ 6, nil ], [ 6, 'k' ] ],
88
- [ '=', [ 6, 'l' ], [ 7, 'l' ] ],
89
- [ '=', [ 7, 'm' ], [ 8, 'm' ] ],
90
- [ '!', [ 8, 'n' ], [ 9, 'r' ] ],
91
- [ '!', [ 9, 'p' ], [ 10, 's' ] ],
92
- [ '+', [ 10, nil ], [ 11, 't' ] ]
159
+ ['-', [0, 'a'], [0, nil]],
160
+ ['=', [1, 'b'], [0, 'b']],
161
+ ['=', [2, 'c'], [1, 'c']],
162
+ ['+', [3, nil], [2, 'd']],
163
+ ['=', [3, 'e'], [3, 'e']],
164
+ ['!', [4, 'h'], [4, 'f']],
165
+ ['=', [5, 'j'], [5, 'j']],
166
+ ['+', [6, nil], [6, 'k']],
167
+ ['=', [6, 'l'], [7, 'l']],
168
+ ['=', [7, 'm'], [8, 'm']],
169
+ ['!', [8, 'n'], [9, 'r']],
170
+ ['!', [9, 'p'], [10, 's']],
171
+ ['+', [10, nil], [11, 't']]
93
172
  ]
94
173
  end
95
174
 
@@ -113,13 +192,13 @@ module Diff::LCS::SpecHelper
113
192
  end
114
193
 
115
194
  def format_diffs(diffs)
116
- diffs.map do |e|
195
+ diffs.map { |e|
117
196
  if e.kind_of?(Array)
118
- e.map { |f| f.to_a.join }.join(", ")
197
+ e.map { |f| f.to_a.join }.join(', ')
119
198
  else
120
199
  e.to_a.join
121
200
  end
122
- end.join("\n")
201
+ }.join("\n")
123
202
  end
124
203
 
125
204
  def map_diffs(diffs, klass = Diff::LCS::ContextChange)
@@ -140,8 +219,8 @@ module Diff::LCS::SpecHelper
140
219
 
141
220
  def balanced_reverse(change_result)
142
221
  new_result = []
143
- change_result.each { |line|
144
- line = [ line[0], line[2], line[1] ]
222
+ change_result.each do |line|
223
+ line = [line[0], line[2], line[1]]
145
224
  case line[0]
146
225
  when '<'
147
226
  line[0] = '>'
@@ -149,21 +228,21 @@ module Diff::LCS::SpecHelper
149
228
  line[0] = '<'
150
229
  end
151
230
  new_result << line
152
- }
153
- new_result.sort_by { |line| [ line[1], line[2] ] }
231
+ end
232
+ new_result.sort_by { |line| [line[1], line[2]] }
154
233
  end
155
234
 
156
235
  def map_to_no_change(change_result)
157
236
  new_result = []
158
- change_result.each { |line|
237
+ change_result.each do |line|
159
238
  case line[0]
160
239
  when '!'
161
- new_result << [ '<', line[1], line[2] ]
162
- new_result << [ '>', line[1] + 1, line[2] ]
240
+ new_result << ['<', line[1], line[2]]
241
+ new_result << ['>', line[1] + 1, line[2]]
163
242
  else
164
243
  new_result << line
165
244
  end
166
- }
245
+ end
167
246
  new_result
168
247
  end
169
248
 
@@ -200,14 +279,18 @@ module Diff::LCS::SpecHelper
200
279
  end
201
280
 
202
281
  def finished_a(event)
203
- @done_a << [event.old_element, event.old_position,
204
- event.new_element, event.new_position]
282
+ @done_a << [
283
+ event.old_element, event.old_position,
284
+ event.new_element, event.new_position
285
+ ]
205
286
  end
206
287
 
207
288
  def finished_b(event)
208
- p "called #finished_b"
209
- @done_b << [event.old_element, event.old_position,
210
- event.new_element, event.new_position]
289
+ p 'called #finished_b'
290
+ @done_b << [
291
+ event.old_element, event.old_position,
292
+ event.new_element, event.new_position
293
+ ]
211
294
  end
212
295
  end
213
296
  callbacks.reset
@@ -233,19 +316,19 @@ module Diff::LCS::SpecHelper
233
316
  end
234
317
 
235
318
  def match(event)
236
- @result << [ "=", event.old_position, event.new_position ]
319
+ @result << ['=', event.old_position, event.new_position]
237
320
  end
238
321
 
239
322
  def discard_a(event)
240
- @result << [ "<", event.old_position, event.new_position ]
323
+ @result << ['<', event.old_position, event.new_position]
241
324
  end
242
325
 
243
326
  def discard_b(event)
244
- @result << [ ">", event.old_position, event.new_position ]
327
+ @result << ['>', event.old_position, event.new_position]
245
328
  end
246
329
 
247
330
  def change(event)
248
- @result << [ "!", event.old_position, event.new_position ]
331
+ @result << ['!', event.old_position, event.new_position]
249
332
  end
250
333
  end
251
334
  cb.reset
@@ -265,14 +348,14 @@ module Diff::LCS::SpecHelper
265
348
 
266
349
  matcher :be_nil_or_match_values do |ii, s1, s2|
267
350
  match do |ee|
268
- ee.should satisfy { |vee| vee.nil? || s1[ii] == s2[ee] }
351
+ expect(ee).to(satisfy { |vee| vee.nil? || s1[ii] == s2[ee] })
269
352
  end
270
353
  end
271
354
 
272
355
  matcher :correctly_map_sequence do |s1|
273
356
  match do |actual|
274
357
  actual.each_with_index { |ee, ii|
275
- ee.should be_nil_or_match_values(ii, s1, @s2)
358
+ expect(ee).to be_nil_or_match_values(ii, s1, @s2)
276
359
  }
277
360
  end
278
361