inci_score 2.0.1 → 2.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5970cfdecac8492dbfd510dce7a24488e543233c
4
- data.tar.gz: fb5b1171f1fcab479e24b33dc7d7f37582b93741
3
+ metadata.gz: 64259796b3d4a9d134999b66cdbd9bf869340ee5
4
+ data.tar.gz: ab5a536ebc4841ab86d3f3a3e5d70a88c146b81b
5
5
  SHA512:
6
- metadata.gz: 42624a99c66bc3fcfb53cff14ebe6a153b220901df9b9e5f49f3d8ec2c9378436cd7090446bb449fefc7320c8ff61fdd5375b551b015312858fac8b8bfa8b66c
7
- data.tar.gz: 2f6bcc48dd8727a6b2b9665882cd3a809b849a7876a7a5303b7a8c3438c373fb3e25c28545889f70fcc14aa1724ea5febfbb5a78a555456ec99e44b5ca9de329
6
+ metadata.gz: a03e0a913ab6c41350a2305de482801abafa191a249e5fe73437e2a444e0e25c0be9f8479f7c442134ca7ed663d8fef63ef7f985d43aeb05d62e33706fe29f42
7
+ data.tar.gz: 3be018bbc1b8e64cae32bd810161237f50187a1f3e430489968ad865b771450b150ea28b59e3aea841a3c92d31b5f30bebd28c9e8b25ec8c4acf1de5a26565ae
data/.travis.yml CHANGED
@@ -1,4 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.2.2
4
+ - 2.3.0
3
5
  - 2.4.0
4
6
  before_install: gem install bundler -v 1.11.2
data/README.md CHANGED
@@ -146,6 +146,6 @@ wrk -t 4 -c 100 -d 30s --timeout 2000 http://127.0.0.1:9292/?src=<list_of_ingred
146
146
  | exact matching | aqua,parfum,zeolite | 48863.58 | 0.31/0.55/10.82 |
147
147
 
148
148
  ## Ruby 2.4
149
- After upgrading to Ruby 2.4 i doubled the throughput of the matcher: i assume Ruby optimization to the [Hash access](#https://blog.heroku.com/ruby-2-4-features-hashes-integers-rounding) is the driving reason.
149
+ After upgrading to Ruby 2.4 i doubled the throughput of the matcher (24008.11 vs 48863.58 req/s): i assume Ruby optimization to the [Hash access](https://blog.heroku.com/ruby-2-4-features-hashes-integers-rounding) is the driving reason.
150
150
  I also adopted the new #match? method to avoid creating a MatchData object when i am just checking for predicate.
151
- In the end Ruby upgrade is a big deal for my gem, give it a try!
151
+ In the end Ruby upgrade is a big deal for my gem and i recommend to give it a try!
data/inci_score.gemspec CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
14
14
  s.executables << "inci_score"
15
15
  s.require_paths = ["lib"]
16
16
  s.license = "MIT"
17
- s.required_ruby_version = ">= 2.4"
17
+ s.required_ruby_version = ">= 2.2.2"
18
18
 
19
19
  s.add_runtime_dependency "nokogiri", "~> 1.6"
20
20
  s.add_runtime_dependency "puma", "~> 3"
@@ -44,12 +44,3 @@ module InciScore
44
44
  end
45
45
  end
46
46
 
47
- String::class_eval do
48
- def distance_utf8(t)
49
- InciScore::Levenshtein.new(self, t).call
50
- end
51
-
52
- def distance(t)
53
- InciScore::LevenshteinC.new.call(self.downcase, self.size, t.downcase, t.size)
54
- end
55
- end
@@ -1,6 +1,7 @@
1
- require 'inci_score/levenshtein'
1
+ require 'inci_score/refinements'
2
2
 
3
3
  module InciScore
4
+ using Refinements
4
5
  class Recognizer
5
6
  module Rules
6
7
  class Base
@@ -47,7 +48,7 @@ module InciScore
47
48
  return if @src.size < TOLERANCE
48
49
  digits = @src[0, MIN_MEANINGFUL]
49
50
  @catalog.detect do |component, _|
50
- component.match?(/^#{Regexp::escape(digits)}/)
51
+ component.matches?(/^#{Regexp::escape(digits)}/)
51
52
  end.to_a.first
52
53
  end
53
54
  end
@@ -58,7 +59,7 @@ module InciScore
58
59
  def call
59
60
  tokens.each do |token|
60
61
  @catalog.each do |component, _|
61
- return component if component.match?(/\b#{Regexp.escape(token)}\b/)
62
+ return component if component.matches?(/\b#{Regexp.escape(token)}\b/)
62
63
  end
63
64
  end
64
65
  nil
@@ -0,0 +1,20 @@
1
+ require 'inci_score/levenshtein'
2
+
3
+ module InciScore
4
+ module Refinements
5
+ refine(String) do
6
+ def distance_utf8(t)
7
+ InciScore::Levenshtein.new(self, t).call
8
+ end
9
+
10
+ def distance(t)
11
+ InciScore::LevenshteinC.new.call(self.downcase, self.size, t.downcase, t.size)
12
+ end
13
+
14
+ def matches?(re)
15
+ return match?(re) if defined?("".match?)
16
+ match(re)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,3 +1,3 @@
1
1
  module InciScore
2
- VERSION = "2.0.1"
2
+ VERSION = "2.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inci_score
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - costajob
@@ -153,6 +153,7 @@ files:
153
153
  - lib/inci_score/normalizer_rules.rb
154
154
  - lib/inci_score/recognizer.rb
155
155
  - lib/inci_score/recognizer_rules.rb
156
+ - lib/inci_score/refinements.rb
156
157
  - lib/inci_score/response.rb
157
158
  - lib/inci_score/score.rb
158
159
  - lib/inci_score/scorer.rb
@@ -170,7 +171,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
170
171
  requirements:
171
172
  - - ">="
172
173
  - !ruby/object:Gem::Version
173
- version: '2.4'
174
+ version: 2.2.2
174
175
  required_rubygems_version: !ruby/object:Gem::Requirement
175
176
  requirements:
176
177
  - - ">="