text_alignment 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,302 @@
1
+ require 'spec_helper'
2
+
3
+ describe TextAlignment::TextAlignment do
4
+ context 'for exception handling' do
5
+ it 'should raise error for passing of nil strings' do
6
+ expect {TextAlignment::TextAlignment.new('abc', nil)}.to raise_error
7
+ expect {TextAlignment::TextAlignment.new(nil, 'abc')}.to raise_error
8
+ expect {TextAlignment::TextAlignment.new(nil, nil)}.to raise_error
9
+ end
10
+
11
+ it 'should raise error for passing of nil dictionary' do
12
+ expect {TextAlignment::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.new('abc', 'abcxyz')
58
+ expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>6})
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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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 match_array([['-', '-'], ['β', '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::TextAlignment.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 match_array([['-', '-'], ['β', '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::TextAlignment.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 match_array([['β', '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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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::TextAlignment.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
@@ -0,0 +1,22 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'text_alignment/version'
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.name = 'text_alignment'
7
+ gem.version = TextAlignment::VERSION
8
+ gem.authors = ['Jin-Dong Kim']
9
+ gem.email = ['jdkim@dbcls.rois.ac.jp']
10
+ gem.description = %q{A ruby class that allows for computing the alignment
11
+ of two character strings and annotations made to them.}
12
+ gem.summary = 'Ruby class for aligning two character strings'
13
+ gem.license = 'MIT'
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ['lib']
19
+
20
+ gem.add_development_dependency 'ruby-dictionary', '~>1.1', '>=1.1.1'
21
+ gem.add_development_dependency 'rspec', '~>3.0'
22
+ end
metadata ADDED
@@ -0,0 +1,108 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: text_alignment
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Jin-Dong Kim
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-05-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ruby-dictionary
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.1'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.1.1
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.1'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.1.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: rspec
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.0'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.0'
47
+ description: |-
48
+ A ruby class that allows for computing the alignment
49
+ of two character strings and annotations made to them.
50
+ email:
51
+ - jdkim@dbcls.rois.ac.jp
52
+ executables: []
53
+ extensions: []
54
+ extra_rdoc_files: []
55
+ files:
56
+ - ".gitignore"
57
+ - Gemfile
58
+ - Gemfile.lock
59
+ - LICENSE.txt
60
+ - README.md
61
+ - lib/text_alignment.rb
62
+ - lib/text_alignment/approximate_fit.rb
63
+ - lib/text_alignment/find_divisions.rb
64
+ - lib/text_alignment/glcs_alignment.rb
65
+ - lib/text_alignment/glcs_alignment_fast.rb
66
+ - lib/text_alignment/glcs_required.rb
67
+ - lib/text_alignment/lcs_alignment.rb
68
+ - lib/text_alignment/lcs_cdiff.rb
69
+ - lib/text_alignment/lcs_comparison.rb
70
+ - lib/text_alignment/lcs_min.rb
71
+ - lib/text_alignment/mappings.rb
72
+ - lib/text_alignment/text_alignment.rb
73
+ - lib/text_alignment/version.rb
74
+ - spec/spec_helper.rb
75
+ - spec/text_alignment/glcs_alignment_spec.rb
76
+ - spec/text_alignment/lcs_alignment_spec.rb
77
+ - spec/text_alignment/lcs_comparision_spec.rb
78
+ - spec/text_alignment/text_alignment_spec.rb
79
+ - text_alignment.gemspec
80
+ homepage:
81
+ licenses:
82
+ - MIT
83
+ metadata: {}
84
+ post_install_message:
85
+ rdoc_options: []
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ requirements: []
99
+ rubygems_version: 3.0.3
100
+ signing_key:
101
+ specification_version: 4
102
+ summary: Ruby class for aligning two character strings
103
+ test_files:
104
+ - spec/spec_helper.rb
105
+ - spec/text_alignment/glcs_alignment_spec.rb
106
+ - spec/text_alignment/lcs_alignment_spec.rb
107
+ - spec/text_alignment/lcs_comparision_spec.rb
108
+ - spec/text_alignment/text_alignment_spec.rb