jaro_winkler 1.5.1 → 1.5.2
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.
- checksums.yaml +4 -4
- data/ext/jaro_winkler/extconf.rb +3 -14
- data/ext/jaro_winkler/jaro_winkler.c +5 -3
- data/lib/jaro_winkler/jaro_winkler_pure.rb +6 -0
- data/lib/jaro_winkler/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a54cd261b2f561005020139db57b155c402b572f66d665ed20e7f24eeeb4c2bf
|
4
|
+
data.tar.gz: 461c6ca244424f65a1d37525d4f65e498b99153aea3726c6207f7fe00a406495
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 763dc827330ddffabc653c4025f0612f0da0c401af61b64edca89a14089378088a65a2458cfbdfa0861fd88733ef517ad00a9f048cfe6c0ff9f2c230ccfbf97c
|
7
|
+
data.tar.gz: 8c688332177a4aef85f39868b8f030623cf41b71befff5ea103bdf5e69e79ec0579e1c99286e08e877c59778196d9b11c4b701d05dd84198881a339d1237e5f3
|
data/ext/jaro_winkler/extconf.rb
CHANGED
@@ -1,16 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
create_makefile('jaro_winkler/jaro_winkler_ext')
|
7
|
-
else
|
8
|
-
open('Makefile', 'wb') do |file|
|
9
|
-
file.write <<-MAKEFILE
|
10
|
-
.PHONY: install
|
11
|
-
install:
|
12
|
-
\techo "Cannot compile C Extension, fall back to pure Ruby version."
|
13
|
-
clean:
|
14
|
-
MAKEFILE
|
15
|
-
end
|
16
|
-
end
|
3
|
+
require 'mkmf'
|
4
|
+
$CFLAGS << ' -std=c99 '
|
5
|
+
create_makefile('jaro_winkler/jaro_winkler_ext')
|
@@ -27,12 +27,11 @@ VALUE distance(size_t argc, VALUE *argv, VALUE self,
|
|
27
27
|
uint32_t *codepoints2, size_t len2,
|
28
28
|
Options *)) {
|
29
29
|
VALUE s1, s2, opt;
|
30
|
-
CodePoints cp1, cp2;
|
31
30
|
|
32
31
|
rb_scan_args((int32_t)argc, argv, "2:", &s1, &s2, &opt);
|
33
|
-
codepoints_init(&cp1, s1);
|
34
|
-
codepoints_init(&cp2, s2);
|
35
32
|
|
33
|
+
Check_Type(s1, T_STRING);
|
34
|
+
Check_Type(s2, T_STRING);
|
36
35
|
Options c_opt = DEFAULT_OPTIONS;
|
37
36
|
if (TYPE(opt) == T_HASH) {
|
38
37
|
VALUE weight = rb_hash_aref(opt, ID2SYM(rb_intern("weight"))),
|
@@ -54,6 +53,9 @@ VALUE distance(size_t argc, VALUE *argv, VALUE self,
|
|
54
53
|
c_opt.adj_table =
|
55
54
|
(TYPE(adj_table) == T_FALSE || NIL_P(adj_table)) ? 0 : 1;
|
56
55
|
}
|
56
|
+
CodePoints cp1, cp2;
|
57
|
+
codepoints_init(&cp1, s1);
|
58
|
+
codepoints_init(&cp2, s2);
|
57
59
|
VALUE ret = rb_float_new(
|
58
60
|
(*distance_fn)(cp1.data, cp1.length, cp2.data, cp2.length, &c_opt));
|
59
61
|
codepoints_free(&cp1);
|
@@ -14,10 +14,12 @@ module JaroWinkler
|
|
14
14
|
|
15
15
|
class << self
|
16
16
|
def distance(str1, str2, options = {})
|
17
|
+
validate!(str1, str2)
|
17
18
|
_distance str1.codepoints.to_a, str2.codepoints.to_a, options
|
18
19
|
end
|
19
20
|
|
20
21
|
def jaro_distance(str1, str2, options = {})
|
22
|
+
validate!(str1, str2)
|
21
23
|
_jaro_distance str1.codepoints.to_a, str2.codepoints.to_a, options
|
22
24
|
end
|
23
25
|
|
@@ -125,5 +127,9 @@ module JaroWinkler
|
|
125
127
|
m = similar_count / 10.0 + m if options[:adj_table]
|
126
128
|
(m / len1 + m / len2 + (m - t) / m) / 3
|
127
129
|
end
|
130
|
+
|
131
|
+
def validate!(str1, str2)
|
132
|
+
raise TypeError unless str1.is_a?(String) && str2.is_a?(String)
|
133
|
+
end
|
128
134
|
end
|
129
135
|
end
|
data/lib/jaro_winkler/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jaro_winkler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jian Weihang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|