text_alignment 0.2.9 → 0.3.9

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.
@@ -1,3 +1,3 @@
1
1
  class TextAlignment
2
- VERSION = '0.2.9'
2
+ VERSION = '0.3.9'
3
3
  end
@@ -12,7 +12,7 @@ Gem::Specification.new do |gem|
12
12
  gem.summary = 'Ruby class for aligning two character strings'
13
13
  gem.license = 'MIT'
14
14
 
15
- gem.files = `git ls-files`.split($/)
15
+ gem.files = `git ls-files`.split($/) - `git ls-files spec`.split($/)
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ['lib']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: text_alignment
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 0.3.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jin-Dong Kim
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-10 00:00:00.000000000 Z
11
+ date: 2020-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-dictionary
@@ -75,6 +75,7 @@ files:
75
75
  - README.md
76
76
  - bin/align_annotations
77
77
  - lib/text_alignment.rb
78
+ - lib/text_alignment/anchor_finder.rb
78
79
  - lib/text_alignment/approximate_fit.rb
79
80
  - lib/text_alignment/find_divisions.rb
80
81
  - lib/text_alignment/glcs_alignment.rb
@@ -85,13 +86,9 @@ files:
85
86
  - lib/text_alignment/lcs_comparison.rb
86
87
  - lib/text_alignment/lcs_min.rb
87
88
  - lib/text_alignment/mappings.rb
89
+ - lib/text_alignment/mixed_alignment.rb
88
90
  - lib/text_alignment/text_alignment.rb
89
91
  - lib/text_alignment/version.rb
90
- - spec/spec_helper.rb
91
- - spec/text_alignment/glcs_alignment_spec.rb
92
- - spec/text_alignment/lcs_alignment_spec.rb
93
- - spec/text_alignment/lcs_comparision_spec.rb
94
- - spec/text_alignment/text_alignment_spec.rb
95
92
  - text_alignment.gemspec
96
93
  homepage:
97
94
  licenses:
@@ -116,9 +113,4 @@ rubygems_version: 3.0.8
116
113
  signing_key:
117
114
  specification_version: 4
118
115
  summary: Ruby class for aligning two character strings
119
- test_files:
120
- - spec/spec_helper.rb
121
- - spec/text_alignment/glcs_alignment_spec.rb
122
- - spec/text_alignment/lcs_alignment_spec.rb
123
- - spec/text_alignment/lcs_comparision_spec.rb
124
- - spec/text_alignment/text_alignment_spec.rb
116
+ test_files: []
@@ -1 +0,0 @@
1
- require 'text_alignment'
@@ -1,302 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe TextAlignment::GLCSAlignment do
4
- context 'for exception handling' do
5
- it 'should raise error for passing of nil strings' do
6
- expect {TextAlignment::GLCSAlignment.new('abc', nil)}.to raise_error
7
- expect {TextAlignment::GLCSAlignment.new(nil, 'abc')}.to raise_error
8
- expect {TextAlignment::GLCSAlignment.new(nil, nil)}.to raise_error
9
- end
10
-
11
- it 'should raise error for passing of nil dictionary' do
12
- expect {TextAlignment::GLCSAlignment.new('abc', 'abc', nil)}.to raise_error
13
- end
14
- end
15
-
16
- context 'in the beginning of a string' do
17
- it 'should detect a deletion' do
18
- #012345 012
19
- sa = TextAlignment::GLCSAlignment.new('xyzabc', 'abc')
20
- expect(sa.position_map_begin).to eq({0=>0, 1=>0, 2=>0, 3=>0, 4=>1, 5=>2, 6=>3})
21
- expect(sa.position_map_end).to eq({0=>0, 1=>0, 2=>0, 3=>0, 4=>1, 5=>2, 6=>3})
22
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
23
- expect(sa.mapped_elements).to eq([])
24
- end
25
-
26
- it 'should detect an addition' do
27
- #012 012345
28
- sa = TextAlignment::GLCSAlignment.new('abc', 'xyzabc')
29
- expect(sa.position_map_begin).to eq({0=>3, 1=>4, 2=>5, 3=>6})
30
- expect(sa.position_map_end).to eq({0=>3, 1=>4, 2=>5, 3=>6})
31
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
32
- expect(sa.mapped_elements).to eq([])
33
- end
34
-
35
- it 'should detect a variation' do
36
- #012345 01234
37
- sa = TextAlignment::GLCSAlignment.new('ijkabc', 'xyabc')
38
- expect(sa.position_map_begin).to eq({0=>0, 1=>nil, 2=>nil, 3=>2, 4=>3, 5=>4, 6=>5})
39
- expect(sa.position_map_end).to eq({0=>0, 1=>nil, 2=>nil, 3=>2, 4=>3, 5=>4, 6=>5})
40
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
41
- expect(sa.mapped_elements).to eq([['ijk', 'xy']])
42
- end
43
- end
44
-
45
- context 'in the end of a string' do
46
- it 'should detect a deletion' do
47
- #012345 012
48
- sa = TextAlignment::GLCSAlignment.new('abcxyz', 'abc')
49
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>3, 4=>3, 5=>3, 6=>3})
50
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>3, 4=>3, 5=>3, 6=>3})
51
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
52
- expect(sa.mapped_elements).to eq([])
53
- end
54
-
55
- it 'should detect an addition' do
56
- #012 012345
57
- sa = TextAlignment::GLCSAlignment.new('abc', 'abcxyz')
58
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>3})
59
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>3})
60
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
61
- expect(sa.mapped_elements).to eq([])
62
- end
63
-
64
- it 'should detect a variation' do
65
- #012345 01234
66
- sa = TextAlignment::GLCSAlignment.new('abcijk', 'abcxy')
67
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>3, 4=>nil, 5=>nil, 6=>5})
68
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>3, 4=>nil, 5=>nil, 6=>5})
69
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
70
- expect(sa.mapped_elements).to eq([['ijk', 'xy']])
71
- end
72
- end
73
-
74
- context 'in the middle of a string' do
75
- it 'should detect a deletion' do
76
- #0123456 0123
77
- sa = TextAlignment::GLCSAlignment.new('abxyzcd', 'abcd')
78
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>2, 4=>2, 5=>2, 6=>3, 7=>4})
79
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>2, 4=>2, 5=>2, 6=>3, 7=>4})
80
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c'], ['d', 'd']])
81
- expect(sa.mapped_elements).to eq([])
82
- end
83
-
84
- it 'should detect an addition' do
85
- #0123 0123456
86
- sa = TextAlignment::GLCSAlignment.new('abcd', 'abxyzcd')
87
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>6, 4=>7})
88
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>6, 4=>7})
89
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c'], ['d', 'd']])
90
- expect(sa.mapped_elements).to eq([])
91
- end
92
-
93
- it 'should detect a variation' do
94
- #0123456 012345
95
- sa = TextAlignment::GLCSAlignment.new('abijkcd', 'abxycd')
96
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>nil, 4=>nil, 5=>4, 6=>5, 7=>6})
97
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>nil, 4=>nil, 5=>4, 6=>5, 7=>6})
98
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c'], ['d', 'd']])
99
- expect(sa.mapped_elements).to eq([['ijk', 'xy']])
100
- end
101
- end
102
-
103
- context ', with a dictionary with the first entry, ' do
104
- before(:all) do
105
- @dictionary = [["β", "beta"]]
106
- end
107
- it 'should handle consecutive unicode spellouts in the middle of a string' do
108
- #0123 01234567890
109
- sa = TextAlignment::GLCSAlignment.new('-βκ-', '-betakappa-', @dictionary)
110
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10, 4=>11})
111
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>5, 3=>10, 4=>11})
112
- expect(sa.common_elements).to eq([['-', '-'], ['β', 'beta'], ['-', '-']])
113
- expect(sa.mapped_elements).to eq([['κ', 'kappa']])
114
- end
115
-
116
- it 'should handle consecutive unicode spellouts in the end of a string' do
117
- #012 0123456789
118
- sa = TextAlignment::GLCSAlignment.new('-βκ', '-betakappa', @dictionary)
119
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10})
120
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>5, 3=>10})
121
- expect(sa.common_elements).to eq([['-', '-'], ['β', 'beta']])
122
- expect(sa.mapped_elements).to eq([['κ', 'kappa']])
123
- end
124
-
125
- it 'should handle consecutive unicode spellouts in the beginning of a string' do
126
- #012 0123456789
127
- sa = TextAlignment::GLCSAlignment.new('βκ-', 'betakappa-', @dictionary)
128
- expect(sa.position_map_begin).to eq({0=>0, 1=>4, 2=>9, 3=>10})
129
- expect(sa.position_map_end).to eq({0=>0, 1=>4, 2=>9, 3=>10})
130
- expect(sa.common_elements).to eq([['β', 'beta'], ['-', '-']])
131
- expect(sa.mapped_elements).to eq([['κ', 'kappa']])
132
- end
133
-
134
- it 'should handle consecutive unicode restorations in the middle of a string' do
135
- #01234567890 0123
136
- sa = TextAlignment::GLCSAlignment.new('-betakappa-', '-βκ-', @dictionary)
137
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3, 11=>4})
138
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3, 11=>4})
139
- end
140
-
141
- it 'should handle consecutive unicode restorations in the beginning of a string' do
142
- #0123456789 012
143
- sa = TextAlignment::GLCSAlignment.new('betakappa-', 'βκ-', @dictionary)
144
- expect(sa.position_map_begin).to eq({0=>0, 1=>nil, 2=>nil, 3=>nil, 4=>1, 5=>nil, 6=>nil, 7=>nil, 8=>nil, 9=>2, 10=>3})
145
- expect(sa.position_map_end).to eq({0=>0, 1=>nil, 2=>nil, 3=>nil, 4=>1, 5=>nil, 6=>nil, 7=>nil, 8=>nil, 9=>2, 10=>3})
146
- end
147
-
148
- it 'should handle consecutive unicode restorations in the end of a string' do
149
- #0123456789 012
150
- sa = TextAlignment::GLCSAlignment.new('-betakappa', '-βκ', @dictionary)
151
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3})
152
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3})
153
- end
154
- end
155
-
156
- context ', with a dictionary with the second entry, ' do
157
- before(:all) do
158
- @dictionary = [["κ", "kappa"]]
159
- end
160
- it 'should handle consecutive unicode spellouts in the middle of a string' do
161
- #0123 01234567890
162
- sa = TextAlignment::GLCSAlignment.new('-βκ-', '-betakappa-', @dictionary)
163
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10, 4=>11})
164
- end
165
-
166
- it 'should handle consecutive unicode spellouts in the end of a string' do
167
- #012 0123456789
168
- sa = TextAlignment::GLCSAlignment.new('-βκ', '-betakappa', @dictionary)
169
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10})
170
- end
171
-
172
- it 'should handle consecutive unicode spellouts in the beginning of a string' do
173
- #012 0123456789
174
- sa = TextAlignment::GLCSAlignment.new('βκ-', 'betakappa-', @dictionary)
175
- expect(sa.position_map_begin).to eq({0=>0, 1=>4, 2=>9, 3=>10})
176
- end
177
-
178
- it 'should handle consecutive unicode restorations in the middle of a string' do
179
- #01234567890 0123
180
- sa = TextAlignment::GLCSAlignment.new('-betakappa-', '-βκ-', @dictionary)
181
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3, 11=>4})
182
- end
183
-
184
- it 'should handle consecutive unicode restorations in the beginning of a string' do
185
- #0123456789 012
186
- sa = TextAlignment::GLCSAlignment.new('betakappa-', 'βκ-', @dictionary)
187
- expect(sa.position_map_begin).to eq({0=>0, 1=>nil, 2=>nil, 3=>nil, 4=>1, 5=>nil, 6=>nil, 7=>nil, 8=>nil, 9=>2, 10=>3})
188
- end
189
-
190
- it 'should handle consecutive unicode restorations in the end of a string' do
191
- #0123456789 012
192
- sa = TextAlignment::GLCSAlignment.new('-betakappa', '-βκ', @dictionary)
193
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3})
194
- end
195
- end
196
-
197
- context ', with a dictionary with both entries, ' do
198
- before(:all) do
199
- @dictionary = [["β", "beta"], ["κ", "kappa"]]
200
- end
201
- it 'should handle consecutive unicode spellouts in the middle of a string' do
202
- #0123 01234567890
203
- sa = TextAlignment::GLCSAlignment.new('-βκ-', '-betakappa-', @dictionary)
204
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10, 4=>11})
205
- end
206
-
207
- it 'should handle consecutive unicode spellouts in the end of a string' do
208
- #012 0123456789
209
- sa = TextAlignment::GLCSAlignment.new('-βκ', '-betakappa', @dictionary)
210
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10})
211
- end
212
-
213
- it 'should handle consecutive unicode spellouts in the beginning of a string' do
214
- #012 0123456789
215
- sa = TextAlignment::GLCSAlignment.new('βκ-', 'betakappa-', @dictionary)
216
- expect(sa.position_map_begin).to eq({0=>0, 1=>4, 2=>9, 3=>10})
217
- end
218
-
219
- it 'should handle consecutive unicode restorations in the middle of a string' do
220
- #01234567890 0123
221
- sa = TextAlignment::GLCSAlignment.new('-betakappa-', '-βκ-', @dictionary)
222
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3, 11=>4})
223
- end
224
-
225
- it 'should handle consecutive unicode restorations in the beginning of a string' do
226
- #0123456789 012
227
- sa = TextAlignment::GLCSAlignment.new('betakappa-', 'βκ-', @dictionary)
228
- expect(sa.position_map_begin).to eq({0=>0, 1=>nil, 2=>nil, 3=>nil, 4=>1, 5=>nil, 6=>nil, 7=>nil, 8=>nil, 9=>2, 10=>3})
229
- end
230
-
231
- it 'should handle consecutive unicode restorations in the end of a string' do
232
- #0123456789 012
233
- sa = TextAlignment::GLCSAlignment.new('-betakappa', '-βκ', @dictionary)
234
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3})
235
- end
236
- end
237
-
238
- context ', with a dictionary, ' do
239
- before(:all) do
240
- @dictionary = [["β", "beta"], ["κ", "kappa"]]
241
- end
242
-
243
- it 'should handle a unicode spellout followed by addition' do
244
- #012 012345678
245
- sa = TextAlignment::GLCSAlignment.new("-β-", "-beta***-", @dictionary)
246
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>8, 3=>9})
247
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>5, 3=>9})
248
- end
249
-
250
- it 'should handle a unicode retoration followed by addition' do
251
- #012345 012345
252
- sa = TextAlignment::GLCSAlignment.new("-beta-", "-β***-", @dictionary)
253
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>5, 6=>6})
254
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>6})
255
- end
256
-
257
- it 'should handle a unicode spellout followed by deletion' do
258
- #012345 012345
259
- sa = TextAlignment::GLCSAlignment.new("-β***-", "-beta-", @dictionary)
260
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>5, 4=>5, 5=>5, 6=>6})
261
- end
262
-
263
- it 'should handle a unicode retoration followed by deletion' do
264
- #012345678 0123
265
- sa = TextAlignment::GLCSAlignment.new("-beta***-", "-β-", @dictionary)
266
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>2, 7=>2, 8=>2, 9=>3})
267
- end
268
-
269
- it 'should handle a unicode spellout following addition' do
270
- #012 012345678
271
- sa = TextAlignment::GLCSAlignment.new("-β-", "-***beta-", @dictionary)
272
- expect(sa.position_map_begin).to eq({0=>0, 1=>4, 2=>8, 3=>9})
273
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>8, 3=>9})
274
- end
275
-
276
- it 'should handle a unicode retoration following addition' do
277
- #012345 012345
278
- sa = TextAlignment::GLCSAlignment.new("-beta-", "-***β-", @dictionary)
279
- expect(sa.position_map_begin).to eq({0=>0, 1=>4, 2=>nil, 3=>nil, 4=>nil, 5=>5, 6=>6})
280
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>5, 6=>6})
281
- end
282
-
283
- it 'should handle a unicode spellout following deletion' do
284
- #012345 012345
285
- sa = TextAlignment::GLCSAlignment.new("-***β-", "-beta-", @dictionary)
286
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>1, 3=>1, 4=>1, 5=>5, 6=>6})
287
- end
288
-
289
- it 'should handle a unicode retoration following deletion' do
290
- #012345678 012
291
- sa = TextAlignment::GLCSAlignment.new("-***beta-", "-β-", @dictionary)
292
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>1, 3=>1, 4=>1, 5=>nil, 6=>nil, 7=>nil, 8=>2, 9=>3})
293
- end
294
-
295
- end
296
-
297
- from_text = "-beta***-"
298
- to_text = "-##β-"
299
-
300
- from_text = "TGF-beta-induced"
301
- to_text = "TGF-β–induced"
302
- end
@@ -1,98 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe TextAlignment::LCSAlignment do
4
- context 'for exception handling' do
5
- it 'should raise error for passing of nil strings' do
6
- expect {TextAlignment::LCSAlignment.new('abc', nil)}.to raise_error
7
- expect {TextAlignment::LCSAlignment.new(nil, 'abc')}.to raise_error
8
- expect {TextAlignment::LCSAlignment.new(nil, nil)}.to raise_error
9
- end
10
- end
11
-
12
- context 'in the middle of a string' do
13
- it 'should detect a deletion' do
14
- #0123456 0123
15
- sa = TextAlignment::LCSAlignment.new('abxyzcd', 'abcd')
16
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>2, 4=>2, 5=>2, 6=>3, 7=>4})
17
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>2, 4=>2, 5=>2, 6=>3, 7=>4})
18
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c'], ['d', 'd']])
19
- expect(sa.mapped_elements).to eq([])
20
- end
21
-
22
- it 'should detect an addition' do
23
- #0123 0123456
24
- sa = TextAlignment::LCSAlignment.new('abcd', 'abxyzcd')
25
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>6, 4=>7})
26
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>6, 4=>7})
27
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c'], ['d', 'd']])
28
- expect(sa.mapped_elements).to eq([])
29
- end
30
-
31
- it 'should detect a variation' do
32
- #0123456 012345
33
- sa = TextAlignment::LCSAlignment.new('abijkcd', 'abxycd')
34
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>nil, 4=>nil, 5=>4, 6=>5, 7=>6})
35
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>nil, 4=>nil, 5=>4, 6=>5, 7=>6})
36
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c'], ['d', 'd']])
37
- expect(sa.mapped_elements).to eq([['ijk', 'xy']])
38
- end
39
- end
40
-
41
- context 'in the beginning of a string' do
42
- it 'should detect a deletion' do
43
- #012345 012
44
- sa = TextAlignment::LCSAlignment.new('xyzabc', 'abc')
45
- expect(sa.position_map_begin).to eq({0=>0, 1=>0, 2=>0, 3=>0, 4=>1, 5=>2, 6=>3})
46
- expect(sa.position_map_end).to eq({0=>0, 1=>0, 2=>0, 3=>0, 4=>1, 5=>2, 6=>3})
47
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
48
- expect(sa.mapped_elements).to eq([])
49
- end
50
-
51
- it 'should detect an addition' do
52
- #012 012345
53
- sa = TextAlignment::LCSAlignment.new('abc', 'xyzabc')
54
- expect(sa.position_map_begin).to eq({0=>3, 1=>4, 2=>5, 3=>6})
55
- expect(sa.position_map_end).to eq({0=>3, 1=>4, 2=>5, 3=>6})
56
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
57
- expect(sa.mapped_elements).to eq([])
58
- end
59
-
60
- it 'should detect a variation' do
61
- #012345 01234
62
- sa = TextAlignment::LCSAlignment.new('ijkabc', 'xyabc')
63
- expect(sa.position_map_begin).to eq({0=>0, 1=>nil, 2=>nil, 3=>2, 4=>3, 5=>4, 6=>5})
64
- expect(sa.position_map_end).to eq({0=>0, 1=>nil, 2=>nil, 3=>2, 4=>3, 5=>4, 6=>5})
65
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
66
- expect(sa.mapped_elements).to eq([['ijk', 'xy']])
67
- end
68
- end
69
-
70
- context 'in the end of a string' do
71
- it 'should detect a deletion' do
72
- #012345 012
73
- sa = TextAlignment::LCSAlignment.new('abcxyz', 'abc')
74
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>3, 4=>3, 5=>3, 6=>3})
75
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>3, 4=>3, 5=>3, 6=>3})
76
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
77
- expect(sa.mapped_elements).to eq([])
78
- end
79
-
80
- it 'should detect an addition' do
81
- #012 012345
82
- sa = TextAlignment::LCSAlignment.new('abc', 'abcxyz')
83
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>6})
84
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>3})
85
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
86
- expect(sa.mapped_elements).to eq([])
87
- end
88
-
89
- it 'should detect a variation' do
90
- #012345 01234
91
- sa = TextAlignment::LCSAlignment.new('abcijk', 'abcxy')
92
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>3, 4=>nil, 5=>nil, 6=>5})
93
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>3, 4=>nil, 5=>nil, 6=>5})
94
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
95
- expect(sa.mapped_elements).to eq([['ijk', 'xy']])
96
- end
97
- end
98
- end