inci_score 2.5.1 → 3.0.3

Sign up to get free protection for your applications and to get access to all the features.
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