class InciScore::Computer
Constants
- PERCENT
- TOLERANCE
Public Class Methods
new(src:, catalog: Catalog.fetch, tolerance: TOLERANCE, rules: Normalizer::DEFAULT_RULES)
click to toggle source
# File lib/inci_score/computer.rb, line 12 def initialize(src:, catalog: Catalog.fetch, tolerance: TOLERANCE, rules: Normalizer::DEFAULT_RULES) @src = src @catalog = catalog @tolerance = Float(tolerance) @rules = rules @unrecognized = [] end
Public Instance Methods
call()
click to toggle source
# File lib/inci_score/computer.rb, line 23 def call @response ||= Response.new(components: components.map(&:name), unrecognized: @unrecognized, score: score, valid: valid?) end
Private Instance Methods
components()
click to toggle source
# File lib/inci_score/computer.rb, line 38 def components @components ||= ingredients.map do |ingredient| Recognizer.new(ingredient, @catalog).call.tap do |component| @unrecognized << ingredient unless component end end.compact end
ingredients()
click to toggle source
# File lib/inci_score/computer.rb, line 34 def ingredients @ingredients ||= Normalizer.new(src: @src, rules: @rules).call end
score()
click to toggle source
# File lib/inci_score/computer.rb, line 30 def score Scorer.new(components.map(&:hazard)).call end
valid?()
click to toggle source
# File lib/inci_score/computer.rb, line 46 def valid? @unrecognized.size / (ingredients.size / PERCENT) <= @tolerance end