inci_score 2.0.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/README.md +2 -2
- data/inci_score.gemspec +1 -1
- data/lib/inci_score/levenshtein.rb +0 -9
- data/lib/inci_score/recognizer_rules.rb +4 -3
- data/lib/inci_score/refinements.rb +20 -0
- data/lib/inci_score/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64259796b3d4a9d134999b66cdbd9bf869340ee5
|
4
|
+
data.tar.gz: ab5a536ebc4841ab86d3f3a3e5d70a88c146b81b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a03e0a913ab6c41350a2305de482801abafa191a249e5fe73437e2a444e0e25c0be9f8479f7c442134ca7ed663d8fef63ef7f985d43aeb05d62e33706fe29f42
|
7
|
+
data.tar.gz: 3be018bbc1b8e64cae32bd810161237f50187a1f3e430489968ad865b771450b150ea28b59e3aea841a3c92d31b5f30bebd28c9e8b25ec8c4acf1de5a26565ae
|
data/.travis.yml
CHANGED
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](
|
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
|
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.
|
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"
|
@@ -1,6 +1,7 @@
|
|
1
|
-
require 'inci_score/
|
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.
|
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.
|
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
|
data/lib/inci_score/version.rb
CHANGED
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.
|
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:
|
174
|
+
version: 2.2.2
|
174
175
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
175
176
|
requirements:
|
176
177
|
- - ">="
|