jaro_winkler 1.5.1 → 1.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9a6c09b6eb84b074ba116e7a986660665da7948ee55e655c0515137e2e717a6d
4
- data.tar.gz: cd8276983e8a4af489da885caa2e57fc954476d475e4d3b5a0a52ad5c561369d
3
+ metadata.gz: a54cd261b2f561005020139db57b155c402b572f66d665ed20e7f24eeeb4c2bf
4
+ data.tar.gz: 461c6ca244424f65a1d37525d4f65e498b99153aea3726c6207f7fe00a406495
5
5
  SHA512:
6
- metadata.gz: bd00297dd0d4ba66fa0210712c304c5f1f85df7a694148d9fdfaf0c9d0ec8f29544490f55340229b23b3f333b68bdb41b8e5d877af55502da65e85d160422c01
7
- data.tar.gz: 6477366a7cdf3079537654b65253a26e116a303fce88501df94a7a827d1b66e0d39e1918e0498f1f13c0349e407ec2040c002c321844a416b50ae1dbf2f499bd
6
+ metadata.gz: 763dc827330ddffabc653c4025f0612f0da0c401af61b64edca89a14089378088a65a2458cfbdfa0861fd88733ef517ad00a9f048cfe6c0ff9f2c230ccfbf97c
7
+ data.tar.gz: 8c688332177a4aef85f39868b8f030623cf41b71befff5ea103bdf5e69e79ec0579e1c99286e08e877c59778196d9b11c4b701d05dd84198881a339d1237e5f3
@@ -1,16 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- if RUBY_ENGINE == 'ruby'
4
- require 'mkmf'
5
- $CFLAGS << ' -std=c99 '
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JaroWinkler
4
- VERSION = '1.5.1'
4
+ VERSION = '1.5.2'
5
5
  end
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.1
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: 2018-06-06 00:00:00.000000000 Z
11
+ date: 2019-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler