class InciScore::Recognizer
Constants
- Component
- DEFAULT_RULES
Attributes
applied[R]
Public Class Methods
new(ingredient, catalog, rules = DEFAULT_RULES, wrapper = Ingredient)
click to toggle source
# File lib/inci_score/recognizer.rb, line 11 def initialize(ingredient, catalog, rules = DEFAULT_RULES, wrapper = Ingredient) @ingredient = wrapper.new(ingredient) @catalog = catalog @rules = rules @applied = [] end
Public Instance Methods
call()
click to toggle source
# File lib/inci_score/recognizer.rb, line 18 def call return if @ingredient.to_s.empty? component = find_component return unless component Component.new(component, @catalog[component]) end
Private Instance Methods
apply(rule)
click to toggle source
# File lib/inci_score/recognizer.rb, line 33 def apply(rule) @ingredient.values.map do |value| rule.call(value, @catalog) end.find(&:itself) end
find_component()
click to toggle source
# File lib/inci_score/recognizer.rb, line 25 def find_component @rules.reduce(nil) do |component, rule| break(component) if component applied << rule apply(rule) end end