inci_score 2.5.1 → 3.0.3

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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +34 -0
  3. data/README.md +14 -25
  4. data/config/catalog.yml +3 -4
  5. data/config.ru +2 -2
  6. data/inci_score.gemspec +2 -3
  7. data/lib/inci_score/{app.rb → api.rb} +1 -1
  8. data/lib/inci_score/cli.rb +4 -14
  9. data/lib/inci_score/computer.rb +15 -6
  10. data/lib/inci_score/ingredient.rb +45 -0
  11. data/lib/inci_score/normalizer.rb +1 -1
  12. data/lib/inci_score/normalizer_rules.rb +0 -24
  13. data/lib/inci_score/recognizer.rb +25 -7
  14. data/lib/inci_score/recognizer_rules.rb +19 -22
  15. data/lib/inci_score/refinements.rb +1 -1
  16. data/lib/inci_score/response.rb +1 -1
  17. data/lib/inci_score/score.rb +1 -3
  18. data/lib/inci_score/scorer.rb +7 -9
  19. data/lib/inci_score/version.rb +1 -1
  20. data/lib/inci_score.rb +4 -5
  21. data/spec/bench/levenshtein_bench.rb +17 -0
  22. data/spec/bench/normalizer_rules_bench.rb +40 -0
  23. data/spec/bench/recognizer_rules_bench.rb +24 -0
  24. data/spec/helper.rb +6 -0
  25. data/spec/integration/api_spec.rb +23 -0
  26. data/spec/stubs.rb +170 -0
  27. data/spec/unit/catalog_spec.rb +7 -0
  28. data/spec/unit/cli_spec.rb +29 -0
  29. data/spec/unit/computer_spec.rb +31 -0
  30. data/spec/unit/ingredient_spec.rb +34 -0
  31. data/spec/unit/levenshtein_spec.rb +19 -0
  32. data/spec/unit/normalizer_rules_spec.rb +58 -0
  33. data/spec/unit/normalizer_spec.rb +31 -0
  34. data/spec/unit/recognizer_rules_spec.rb +46 -0
  35. data/spec/unit/recognizer_spec.rb +49 -0
  36. data/spec/unit/response_spec.rb +8 -0
  37. data/spec/unit/score_spec.rb +12 -0
  38. data/spec/unit/scorer_spec.rb +11 -0
  39. data/spec/unit/server_spec.rb +30 -0
  40. metadata +24 -23
  41. data/.gitignore +0 -13
  42. data/.travis.yml +0 -6
  43. data/bin/console +0 -7
  44. data/bin/setup +0 -6
  45. data/lib/inci_score/fetcher.rb +0 -41
  46. data/log/.gitignore +0 -4
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inci_score
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.1
4
+ version: 3.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - costajob
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-15 00:00:00.000000000 Z
11
+ date: 2017-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: nokogiri
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.6'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.6'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: puma
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -130,24 +116,21 @@ executables:
130
116
  extensions: []
131
117
  extra_rdoc_files: []
132
118
  files:
133
- - ".gitignore"
134
- - ".travis.yml"
135
119
  - Gemfile
120
+ - Gemfile.lock
136
121
  - README.md
137
122
  - Rakefile
138
- - bin/console
139
123
  - bin/inci_score
140
- - bin/setup
141
124
  - config.ru
142
125
  - config/catalog.yml
143
126
  - ext/levenshtein.c
144
127
  - inci_score.gemspec
145
128
  - lib/inci_score.rb
146
- - lib/inci_score/app.rb
129
+ - lib/inci_score/api.rb
147
130
  - lib/inci_score/catalog.rb
148
131
  - lib/inci_score/cli.rb
149
132
  - lib/inci_score/computer.rb
150
- - lib/inci_score/fetcher.rb
133
+ - lib/inci_score/ingredient.rb
151
134
  - lib/inci_score/levenshtein.rb
152
135
  - lib/inci_score/normalizer.rb
153
136
  - lib/inci_score/normalizer_rules.rb
@@ -159,7 +142,25 @@ files:
159
142
  - lib/inci_score/scorer.rb
160
143
  - lib/inci_score/server.rb
161
144
  - lib/inci_score/version.rb
162
- - log/.gitignore
145
+ - spec/bench/levenshtein_bench.rb
146
+ - spec/bench/normalizer_rules_bench.rb
147
+ - spec/bench/recognizer_rules_bench.rb
148
+ - spec/helper.rb
149
+ - spec/integration/api_spec.rb
150
+ - spec/stubs.rb
151
+ - spec/unit/catalog_spec.rb
152
+ - spec/unit/cli_spec.rb
153
+ - spec/unit/computer_spec.rb
154
+ - spec/unit/ingredient_spec.rb
155
+ - spec/unit/levenshtein_spec.rb
156
+ - spec/unit/normalizer_rules_spec.rb
157
+ - spec/unit/normalizer_spec.rb
158
+ - spec/unit/recognizer_rules_spec.rb
159
+ - spec/unit/recognizer_spec.rb
160
+ - spec/unit/response_spec.rb
161
+ - spec/unit/score_spec.rb
162
+ - spec/unit/scorer_spec.rb
163
+ - spec/unit/server_spec.rb
163
164
  homepage: https://github.com/costajob/inci_score.git
164
165
  licenses:
165
166
  - MIT
data/.gitignore DELETED
@@ -1,13 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /sample
9
- /spec/reports/
10
- /spec/sample
11
- /tmp/
12
- /**/.DS_Store
13
- *.gem
data/.travis.yml DELETED
@@ -1,6 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.2.2
4
- - 2.3.0
5
- - 2.4.0
6
- before_install: gem install bundler -v 1.11.2
data/bin/console DELETED
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "inci_score"
5
- require "irb"
6
- require "irb/completion"
7
- IRB.start
data/bin/setup DELETED
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
@@ -1,41 +0,0 @@
1
- require "nokogiri"
2
-
3
- module InciScore
4
- class Fetcher
5
- BIODIZIO_URI = "http://www.biodizionario.it/biodizio.php"
6
- SEMAPHORES = %w[vv v g r rr]
7
- CSS_QUERY = %q{table[width="751"] > tr > td img}
8
-
9
- def initialize(src = nil)
10
- @src = src || Thread.new { open(BIODIZIO_URI) }
11
- end
12
-
13
- def call
14
- @components ||= Nokogiri::HTML(doc).css(CSS_QUERY).inject({}) do |acc, img|
15
- hazard = semaphore(img.attr("src"))
16
- name = img.next_sibling.next_sibling
17
- desc = name.next_sibling.next_sibling
18
- name, desc = desc, name if swap?(desc.text)
19
- acc[normalize(name)] = SEMAPHORES.index(hazard)
20
- acc
21
- end
22
- end
23
-
24
- private def doc
25
- @src.respond_to?(:value) ? @src.value : @src
26
- end
27
-
28
- private def semaphore(src)
29
- src.match(/(#{SEMAPHORES.join("|")}).gif$/)[1]
30
- end
31
-
32
- private def normalize(node)
33
- node.text.strip.downcase
34
- end
35
-
36
- private def swap?(desc)
37
- return false if desc.empty?
38
- desc == desc.upcase
39
- end
40
- end
41
- end
data/log/.gitignore DELETED
@@ -1,4 +0,0 @@
1
- # Ignore everything in this directory
2
- *
3
- # Except this file
4
- !.gitignore