amatch 0.2.3 → 0.2.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.
- data/CHANGES +4 -0
- data/{GPL → COPYING} +7 -7
- data/README +25 -0
- data/Rakefile +66 -64
- data/VERSION +1 -1
- data/bin/agrep.rb +0 -4
- data/doc-main.txt +115 -0
- data/ext/amatch.c +351 -98
- data/ext/common.h +25 -0
- data/ext/extconf.rb +0 -5
- data/ext/pair.c +5 -6
- data/ext/pair.h +1 -1
- data/install.rb +28 -1015
- data/lib/amatch/version.rb +8 -0
- data/tests/test_hamming.rb +1 -2
- data/tests/test_jaro.rb +29 -0
- data/tests/test_jaro_winkler.rb +38 -0
- data/tests/test_levenshtein.rb +25 -27
- data/tests/test_longest_subsequence.rb +1 -2
- data/tests/test_longest_substring.rb +1 -2
- data/tests/test_pair_distance.rb +1 -2
- data/tests/test_sellers.rb +52 -54
- metadata +76 -55
- data/README.en +0 -31
- data/ext/MANIFEST +0 -2
- data/ext/tags +0 -24
- data/tests/runner.rb +0 -26
data/tests/test_hamming.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require 'amatch'
|
3
3
|
|
4
|
-
class
|
4
|
+
class TestHamming < Test::Unit::TestCase
|
5
5
|
include Amatch
|
6
6
|
|
7
7
|
D = 0.000001
|
@@ -56,4 +56,3 @@ class TC_Hamming < Test::Unit::TestCase
|
|
56
56
|
assert_in_delta 1.0, @long.similar(@long.pattern), D
|
57
57
|
end
|
58
58
|
end
|
59
|
-
# vim: set et sw=2 ts=2:
|
data/tests/test_jaro.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require File.dirname(__FILE__) + "/../ext/amatch"
|
3
|
+
|
4
|
+
class TestJaro < Test::Unit::TestCase
|
5
|
+
include Amatch
|
6
|
+
|
7
|
+
D = 0.0005
|
8
|
+
|
9
|
+
def setup
|
10
|
+
@martha = Jaro.new('Martha')
|
11
|
+
@dwayne = Jaro.new('dwayne')
|
12
|
+
@dixon = Jaro.new('DIXON')
|
13
|
+
@one = Jaro.new('one')
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_case
|
17
|
+
@martha.ignore_case = true
|
18
|
+
assert_in_delta 0.944, @martha.match('MARHTA'), D
|
19
|
+
@martha.ignore_case = false
|
20
|
+
assert_in_delta 0.444, @martha.match('MARHTA'), D
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_match
|
24
|
+
assert_in_delta 0.944, @martha.match('MARHTA'), D
|
25
|
+
assert_in_delta 0.822, @dwayne.match('DUANE'), D
|
26
|
+
assert_in_delta 0.767, @dixon.match('DICKSONX'), D
|
27
|
+
assert_in_delta 0.667, @one.match('orange'), D
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'amatch'
|
3
|
+
|
4
|
+
class TestJaroWinkler < Test::Unit::TestCase
|
5
|
+
include Amatch
|
6
|
+
|
7
|
+
D = 0.0005
|
8
|
+
|
9
|
+
def setup
|
10
|
+
@martha = JaroWinkler.new('Martha')
|
11
|
+
@dwayne = JaroWinkler.new('dwayne')
|
12
|
+
@dixon = JaroWinkler.new('DIXON')
|
13
|
+
@one = JaroWinkler.new("one")
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_case
|
17
|
+
@martha.ignore_case = true
|
18
|
+
assert_in_delta 0.961, @martha.match('MARHTA'), D
|
19
|
+
@martha.ignore_case = false
|
20
|
+
assert_in_delta 0.500, @martha.match('MARHTA'), D
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_match
|
24
|
+
assert_in_delta 0.961, @martha.match('MARHTA'), D
|
25
|
+
assert_in_delta 0.840, @dwayne.match('DUANE'), D
|
26
|
+
assert_in_delta 0.813, @dixon.match('DICKSONX'), D
|
27
|
+
assert_in_delta 0, @one.match('two'), D
|
28
|
+
assert_in_delta 0.700, @one.match('orange'), D
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_scaling_factor
|
32
|
+
assert_in_delta 0.1, @martha.scaling_factor, 0.0000001
|
33
|
+
@martha.scaling_factor = 0.2
|
34
|
+
assert_in_delta 0.978, @martha.match('MARHTA'), D
|
35
|
+
@martha.scaling_factor = 0.5 # this is far too high
|
36
|
+
assert_in_delta 1.028, @martha.match('MARHTA'), D
|
37
|
+
end
|
38
|
+
end
|
data/tests/test_levenshtein.rb
CHANGED
@@ -1,23 +1,16 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require 'amatch'
|
3
3
|
|
4
|
-
class
|
4
|
+
class TestLevenshtein < Test::Unit::TestCase
|
5
5
|
include Amatch
|
6
6
|
|
7
|
-
D = 0.000001
|
8
|
-
|
9
7
|
def setup
|
8
|
+
@d = 0.000001
|
10
9
|
@empty = Levenshtein.new('')
|
11
10
|
@simple = Levenshtein.new('test')
|
12
11
|
@long = Levenshtein.new('A' * 160)
|
13
12
|
end
|
14
13
|
|
15
|
-
def test_long
|
16
|
-
a = "lost this fantasy, this fantasy, this fantasy, this fantasy, this fantasy, this fantasy\r\n\r\nGood love Neat work\r\n\r\nSuper job Fancy work\r\n\r\nPants job Cool work"
|
17
|
-
b = "lost\r\n\r\nGood love Neat work\r\n\r\nSuper job Fancy work\r\n\r\nPants job Cool work"
|
18
|
-
p a.levenshtein_similar b
|
19
|
-
end
|
20
|
-
|
21
14
|
def test_match
|
22
15
|
assert_equal 4, @simple.match('')
|
23
16
|
assert_equal 0, @simple.match('test')
|
@@ -60,26 +53,31 @@ class TC_Levenshtein < Test::Unit::TestCase
|
|
60
53
|
end
|
61
54
|
|
62
55
|
def test_similar
|
63
|
-
assert_in_delta 1, @empty.similar(''),
|
64
|
-
assert_in_delta 0, @empty.similar('not empty'),
|
65
|
-
assert_in_delta 0.0, @simple.similar(''),
|
66
|
-
assert_in_delta 1.0, @simple.similar('test'),
|
67
|
-
assert_in_delta 0.8, @simple.similar('testa'),
|
68
|
-
assert_in_delta 0.8, @simple.similar('atest'),
|
69
|
-
assert_in_delta 0.8, @simple.similar('teast'),
|
70
|
-
assert_in_delta 0.75, @simple.similar('est'),
|
71
|
-
assert_in_delta 0.75, @simple.similar('tes'),
|
72
|
-
assert_in_delta 0.75, @simple.similar('tst'),
|
73
|
-
assert_in_delta 0.75, @simple.similar('best'),
|
74
|
-
assert_in_delta 0.75, @simple.similar('tost'),
|
75
|
-
assert_in_delta 0.75, @simple.similar('tesa'),
|
76
|
-
assert_in_delta 0.25, @simple.similar('taex'),
|
77
|
-
assert_in_delta 0.4, @simple.similar('aaatestbbb'),
|
78
|
-
assert_in_delta 0.75, @simple.pattern.levenshtein_similar('est'),
|
56
|
+
assert_in_delta 1, @empty.similar(''), @d
|
57
|
+
assert_in_delta 0, @empty.similar('not empty'), @d
|
58
|
+
assert_in_delta 0.0, @simple.similar(''), @d
|
59
|
+
assert_in_delta 1.0, @simple.similar('test'), @d
|
60
|
+
assert_in_delta 0.8, @simple.similar('testa'), @d
|
61
|
+
assert_in_delta 0.8, @simple.similar('atest'), @d
|
62
|
+
assert_in_delta 0.8, @simple.similar('teast'), @d
|
63
|
+
assert_in_delta 0.75, @simple.similar('est'), @d
|
64
|
+
assert_in_delta 0.75, @simple.similar('tes'), @d
|
65
|
+
assert_in_delta 0.75, @simple.similar('tst'), @d
|
66
|
+
assert_in_delta 0.75, @simple.similar('best'), @d
|
67
|
+
assert_in_delta 0.75, @simple.similar('tost'), @d
|
68
|
+
assert_in_delta 0.75, @simple.similar('tesa'), @d
|
69
|
+
assert_in_delta 0.25, @simple.similar('taex'), @d
|
70
|
+
assert_in_delta 0.4, @simple.similar('aaatestbbb'), @d
|
71
|
+
assert_in_delta 0.75, @simple.pattern.levenshtein_similar('est'), @d
|
79
72
|
end
|
80
73
|
|
81
74
|
def test_long
|
82
|
-
assert_in_delta 1.0, @long.similar(@long.pattern),
|
75
|
+
assert_in_delta 1.0, @long.similar(@long.pattern), @d
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_long2
|
79
|
+
a = "lost this fantasy, this fantasy, this fantasy, this fantasy, this fantasy, this fantasy\r\n\r\nGood love Neat work\r\n\r\nSuper job Fancy work\r\n\r\nPants job Cool work"
|
80
|
+
b = "lost\r\n\r\nGood love Neat work\r\n\r\nSuper job Fancy work\r\n\r\nPants job Cool work"
|
81
|
+
assert a.levenshtein_similar(b)
|
83
82
|
end
|
84
83
|
end
|
85
|
-
# vim: set et sw=2 ts=2:
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require 'amatch'
|
3
3
|
|
4
|
-
class
|
4
|
+
class TestLongestSubsequence < Test::Unit::TestCase
|
5
5
|
include Amatch
|
6
6
|
|
7
7
|
D = 0.000001
|
@@ -59,4 +59,3 @@ class TC_LongestSubsequence < Test::Unit::TestCase
|
|
59
59
|
assert_in_delta 1.0, @long.similar(@long.pattern), D
|
60
60
|
end
|
61
61
|
end
|
62
|
-
# vim: set et sw=2 ts=2:
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require 'amatch'
|
3
3
|
|
4
|
-
class
|
4
|
+
class TestLongestSubstring < Test::Unit::TestCase
|
5
5
|
include Amatch
|
6
6
|
|
7
7
|
D = 0.000001
|
@@ -59,4 +59,3 @@ class TC_LongestSubstring < Test::Unit::TestCase
|
|
59
59
|
assert_in_delta 1.0, @long.similar(@long.pattern), D
|
60
60
|
end
|
61
61
|
end
|
62
|
-
# vim: set et sw=2 ts=2:
|
data/tests/test_pair_distance.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require 'amatch'
|
3
3
|
|
4
|
-
class
|
4
|
+
class TestPairDistance < Test::Unit::TestCase
|
5
5
|
include Amatch
|
6
6
|
|
7
7
|
D = 0.000001
|
@@ -84,4 +84,3 @@ class TC_PairDistance < Test::Unit::TestCase
|
|
84
84
|
assert_in_delta 1.0, @long.similar(@long.pattern), D
|
85
85
|
end
|
86
86
|
end
|
87
|
-
# vim: set et sw=2 ts=2:
|
data/tests/test_sellers.rb
CHANGED
@@ -2,49 +2,48 @@ require 'test/unit'
|
|
2
2
|
require 'amatch'
|
3
3
|
require 'test_levenshtein'
|
4
4
|
|
5
|
-
class
|
5
|
+
class TestSellers < TestLevenshtein
|
6
6
|
include Amatch
|
7
|
-
|
8
|
-
D = 0.000001
|
9
|
-
|
7
|
+
|
10
8
|
def setup
|
9
|
+
@d = 0.000001
|
11
10
|
@empty = Sellers.new('')
|
12
11
|
@simple = Sellers.new('test')
|
13
12
|
@long = Sellers.new('A' * 160)
|
14
13
|
end
|
15
14
|
|
16
15
|
def test_weights
|
17
|
-
assert_in_delta 1, @simple.substitution,
|
18
|
-
assert_in_delta 1, @simple.insertion,
|
19
|
-
assert_in_delta 1, @simple.deletion,
|
16
|
+
assert_in_delta 1, @simple.substitution, @d
|
17
|
+
assert_in_delta 1, @simple.insertion, @d
|
18
|
+
assert_in_delta 1, @simple.deletion, @d
|
20
19
|
@simple.insertion = 1
|
21
20
|
@simple.substitution = @simple.deletion = 1000
|
22
|
-
assert_in_delta 1, @simple.match('tst'),
|
23
|
-
assert_in_delta 1, @simple.search('bbbtstccc'),
|
21
|
+
assert_in_delta 1, @simple.match('tst'), @d
|
22
|
+
assert_in_delta 1, @simple.search('bbbtstccc'), @d
|
24
23
|
@simple.deletion = 1
|
25
24
|
@simple.substitution = @simple.insertion = 1000
|
26
|
-
assert_in_delta 1, @simple.match('tedst'),
|
27
|
-
assert_in_delta 1, @simple.search('bbbtedstccc'),
|
25
|
+
assert_in_delta 1, @simple.match('tedst'), @d
|
26
|
+
assert_in_delta 1, @simple.search('bbbtedstccc'), @d
|
28
27
|
@simple.substitution = 1
|
29
28
|
@simple.deletion = @simple.insertion = 1000
|
30
|
-
assert_in_delta 1, @simple.match('tast'),
|
31
|
-
assert_in_delta 1, @simple.search('bbbtastccc'),
|
29
|
+
assert_in_delta 1, @simple.match('tast'), @d
|
30
|
+
assert_in_delta 1, @simple.search('bbbtastccc'), @d
|
32
31
|
@simple.insertion = 0.5
|
33
32
|
@simple.substitution = @simple.deletion = 1000
|
34
|
-
assert_in_delta 0.5, @simple.match('tst'),
|
35
|
-
assert_in_delta 0.5, @simple.search('bbbtstccc'),
|
33
|
+
assert_in_delta 0.5, @simple.match('tst'), @d
|
34
|
+
assert_in_delta 0.5, @simple.search('bbbtstccc'), @d
|
36
35
|
@simple.deletion = 0.5
|
37
36
|
@simple.substitution = @simple.insertion = 1000
|
38
|
-
assert_in_delta 0.5, @simple.match('tedst'),
|
39
|
-
assert_in_delta 0.5, @simple.search('bbbtedstccc'),
|
37
|
+
assert_in_delta 0.5, @simple.match('tedst'), @d
|
38
|
+
assert_in_delta 0.5, @simple.search('bbbtedstccc'), @d
|
40
39
|
@simple.substitution = 0.5
|
41
40
|
@simple.deletion = @simple.insertion = 1000
|
42
|
-
assert_in_delta 0.5, @simple.match('tast'),
|
43
|
-
assert_in_delta 0.5, @simple.search('bbbtastccc'),
|
41
|
+
assert_in_delta 0.5, @simple.match('tast'), @d
|
42
|
+
assert_in_delta 0.5, @simple.search('bbbtastccc'), @d
|
44
43
|
@simple.reset_weights
|
45
|
-
assert_in_delta 1, @simple.substitution,
|
46
|
-
assert_in_delta 1, @simple.insertion,
|
47
|
-
assert_in_delta 1, @simple.deletion,
|
44
|
+
assert_in_delta 1, @simple.substitution, @d
|
45
|
+
assert_in_delta 1, @simple.insertion, @d
|
46
|
+
assert_in_delta 1, @simple.deletion, @d
|
48
47
|
end
|
49
48
|
|
50
49
|
def test_weight_exceptions
|
@@ -54,45 +53,44 @@ class TC_Sellers < TC_Levenshtein
|
|
54
53
|
end
|
55
54
|
|
56
55
|
def test_similar
|
57
|
-
assert_in_delta 0.0, @simple.similar(''),
|
58
|
-
assert_in_delta 1.0, @simple.similar('test'),
|
59
|
-
assert_in_delta 0.8, @simple.similar('testa'),
|
60
|
-
assert_in_delta 0.8, @simple.similar('atest'),
|
61
|
-
assert_in_delta 0.8, @simple.similar('teast'),
|
62
|
-
assert_in_delta 0.75, @simple.similar('est'),
|
63
|
-
assert_in_delta 0.75, @simple.similar('tes'),
|
64
|
-
assert_in_delta 0.75, @simple.similar('tst'),
|
65
|
-
assert_in_delta 0.75, @simple.similar('best'),
|
66
|
-
assert_in_delta 0.75, @simple.similar('tost'),
|
67
|
-
assert_in_delta 0.75, @simple.similar('tesa'),
|
68
|
-
assert_in_delta 0.25, @simple.similar('taex'),
|
69
|
-
assert_in_delta 0.4, @simple.similar('aaatestbbb'),
|
70
|
-
assert_in_delta 0.75, @simple.pattern.levenshtein_similar('est'),
|
56
|
+
assert_in_delta 0.0, @simple.similar(''), @d
|
57
|
+
assert_in_delta 1.0, @simple.similar('test'), @d
|
58
|
+
assert_in_delta 0.8, @simple.similar('testa'), @d
|
59
|
+
assert_in_delta 0.8, @simple.similar('atest'), @d
|
60
|
+
assert_in_delta 0.8, @simple.similar('teast'), @d
|
61
|
+
assert_in_delta 0.75, @simple.similar('est'), @d
|
62
|
+
assert_in_delta 0.75, @simple.similar('tes'), @d
|
63
|
+
assert_in_delta 0.75, @simple.similar('tst'), @d
|
64
|
+
assert_in_delta 0.75, @simple.similar('best'), @d
|
65
|
+
assert_in_delta 0.75, @simple.similar('tost'), @d
|
66
|
+
assert_in_delta 0.75, @simple.similar('tesa'), @d
|
67
|
+
assert_in_delta 0.25, @simple.similar('taex'), @d
|
68
|
+
assert_in_delta 0.4, @simple.similar('aaatestbbb'), @d
|
69
|
+
assert_in_delta 0.75, @simple.pattern.levenshtein_similar('est'), @d
|
71
70
|
end
|
72
71
|
|
73
72
|
def test_similar
|
74
|
-
assert_in_delta 1, @empty.similar(''),
|
75
|
-
assert_in_delta 0, @empty.similar('not empty'),
|
76
|
-
assert_in_delta 0.0, @simple.similar(''),
|
77
|
-
assert_in_delta 1.0, @simple.similar('test'),
|
78
|
-
assert_in_delta 0.8, @simple.similar('testa'),
|
79
|
-
assert_in_delta 0.8, @simple.similar('atest'),
|
80
|
-
assert_in_delta 0.8, @simple.similar('teast'),
|
81
|
-
assert_in_delta 0.75, @simple.similar('est'),
|
82
|
-
assert_in_delta 0.75, @simple.similar('tes'),
|
83
|
-
assert_in_delta 0.75, @simple.similar('tst'),
|
84
|
-
assert_in_delta 0.75, @simple.similar('best'),
|
85
|
-
assert_in_delta 0.75, @simple.similar('tost'),
|
86
|
-
assert_in_delta 0.75, @simple.similar('tesa'),
|
87
|
-
assert_in_delta 0.25, @simple.similar('taex'),
|
88
|
-
assert_in_delta 0.4, @simple.similar('aaatestbbb'),
|
73
|
+
assert_in_delta 1, @empty.similar(''), @d
|
74
|
+
assert_in_delta 0, @empty.similar('not empty'), @d
|
75
|
+
assert_in_delta 0.0, @simple.similar(''), @d
|
76
|
+
assert_in_delta 1.0, @simple.similar('test'), @d
|
77
|
+
assert_in_delta 0.8, @simple.similar('testa'), @d
|
78
|
+
assert_in_delta 0.8, @simple.similar('atest'), @d
|
79
|
+
assert_in_delta 0.8, @simple.similar('teast'), @d
|
80
|
+
assert_in_delta 0.75, @simple.similar('est'), @d
|
81
|
+
assert_in_delta 0.75, @simple.similar('tes'), @d
|
82
|
+
assert_in_delta 0.75, @simple.similar('tst'), @d
|
83
|
+
assert_in_delta 0.75, @simple.similar('best'), @d
|
84
|
+
assert_in_delta 0.75, @simple.similar('tost'), @d
|
85
|
+
assert_in_delta 0.75, @simple.similar('tesa'), @d
|
86
|
+
assert_in_delta 0.25, @simple.similar('taex'), @d
|
87
|
+
assert_in_delta 0.4, @simple.similar('aaatestbbb'), @d
|
89
88
|
@simple.insertion = 1
|
90
89
|
@simple.substitution = @simple.deletion = 2
|
91
|
-
assert_in_delta 0.875, @simple.similar('tst'),
|
90
|
+
assert_in_delta 0.875, @simple.similar('tst'), @d
|
92
91
|
end
|
93
92
|
|
94
93
|
def test_long
|
95
|
-
assert_in_delta 1.0, @long.similar(@long.pattern),
|
94
|
+
assert_in_delta 1.0, @long.similar(@long.pattern), @d
|
96
95
|
end
|
97
96
|
end
|
98
|
-
# vim: set et sw=2 ts=2:
|
metadata
CHANGED
@@ -1,71 +1,92 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.8.11
|
3
|
-
specification_version: 1
|
4
2
|
name: amatch
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.2.
|
7
|
-
date: 2006-09-26 00:00:00 +02:00
|
8
|
-
summary: Approximate String Matching library
|
9
|
-
require_paths:
|
10
|
-
- ext
|
11
|
-
email: flori@ping.de
|
12
|
-
homepage: http://amatch.rubyforge.org
|
13
|
-
rubyforge_project: amatch
|
14
|
-
description: Amatch is a library for approximate string matching and searching in strings. Several algorithms can be used to do this, and it's also possible to compute a similarity metric number between 0.0 and 1.0 for two given strings.
|
15
|
-
autorequire: amatch
|
16
|
-
default_executable: agrep.rb
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 0.2.4
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
6
|
authors:
|
29
7
|
- Florian Frank
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-08-26 00:00:00 +02:00
|
13
|
+
default_executable: agrep.rb
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: |
|
17
|
+
Amatch is a library for approximate string matching and searching in strings.
|
18
|
+
Several algorithms can be used to do this, and it's also possible to compute a
|
19
|
+
similarity metric number between 0.0 and 1.0 for two given strings.
|
20
|
+
|
21
|
+
email: flori@ping.de
|
22
|
+
executables:
|
23
|
+
- agrep.rb
|
24
|
+
extensions:
|
25
|
+
- ext/extconf.rb
|
26
|
+
extra_rdoc_files:
|
27
|
+
- ext/amatch.c
|
28
|
+
- lib/amatch/version.rb
|
29
|
+
- doc-main.txt
|
30
30
|
files:
|
31
|
-
- bin
|
32
|
-
- VERSION
|
33
|
-
- tests
|
34
|
-
- GPL
|
35
|
-
- README.en
|
36
|
-
- install.rb
|
37
|
-
- ext
|
38
|
-
- Rakefile
|
39
31
|
- CHANGES
|
40
32
|
- bin/agrep.rb
|
41
|
-
-
|
33
|
+
- VERSION
|
34
|
+
- README
|
35
|
+
- ext/common.h
|
36
|
+
- ext/extconf.rb
|
37
|
+
- ext/amatch.c
|
38
|
+
- ext/pair.h
|
39
|
+
- ext/pair.c
|
40
|
+
- Rakefile
|
41
|
+
- lib/amatch/version.rb
|
42
42
|
- tests/test_longest_substring.rb
|
43
|
-
- tests/test_levenshtein.rb
|
44
43
|
- tests/test_hamming.rb
|
45
|
-
- tests/test_sellers.rb
|
46
|
-
- tests/test_pair_distance.rb
|
47
44
|
- tests/test_longest_subsequence.rb
|
48
|
-
-
|
49
|
-
-
|
50
|
-
-
|
51
|
-
-
|
52
|
-
-
|
53
|
-
-
|
54
|
-
|
55
|
-
-
|
45
|
+
- tests/test_pair_distance.rb
|
46
|
+
- tests/test_levenshtein.rb
|
47
|
+
- tests/test_jaro.rb
|
48
|
+
- tests/test_sellers.rb
|
49
|
+
- tests/test_jaro_winkler.rb
|
50
|
+
- COPYING
|
51
|
+
- install.rb
|
52
|
+
- doc-main.txt
|
53
|
+
has_rdoc: true
|
54
|
+
homepage: http://amatch.rubyforge.org
|
55
|
+
licenses: []
|
56
|
+
|
57
|
+
post_install_message:
|
56
58
|
rdoc_options:
|
57
|
-
- --title
|
58
|
-
- Amatch -- Approximate Matching
|
59
59
|
- --main
|
60
|
-
-
|
61
|
-
- --
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
-
|
60
|
+
- doc-main.txt
|
61
|
+
- --title
|
62
|
+
- amatch - Approximate Matching
|
63
|
+
require_paths:
|
64
|
+
- ext
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: "0"
|
70
|
+
version:
|
71
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: "0"
|
76
|
+
version:
|
68
77
|
requirements: []
|
69
78
|
|
70
|
-
|
71
|
-
|
79
|
+
rubyforge_project: amatch
|
80
|
+
rubygems_version: 1.3.4
|
81
|
+
signing_key:
|
82
|
+
specification_version: 3
|
83
|
+
summary: Approximate String Matching library
|
84
|
+
test_files:
|
85
|
+
- tests/test_longest_substring.rb
|
86
|
+
- tests/test_hamming.rb
|
87
|
+
- tests/test_longest_subsequence.rb
|
88
|
+
- tests/test_pair_distance.rb
|
89
|
+
- tests/test_levenshtein.rb
|
90
|
+
- tests/test_jaro.rb
|
91
|
+
- tests/test_sellers.rb
|
92
|
+
- tests/test_jaro_winkler.rb
|