Class: Julewire::Core::Processing::Match

Inherits:
Object
  • Object
show all
Defined in:
lib/julewire/core/processing/match.rb

Instance Method Summary collapse

Constructor Details

#initializeMatch

Returns a new instance of Match.



11
12
13
14
# File 'lib/julewire/core/processing/match.rb', line 11

def initialize(&)
  @rules = []
  instance_eval(&) if block_given?
end

Instance Method Details

#call(draft) ⇒ Object



24
25
26
27
28
29
30
31
32
# File 'lib/julewire/core/processing/match.rb', line 24

def call(draft)
  @rules.each do |rule|
    next unless matches_conditions?(draft, rule.conditions)

    result = rule.handler.call(draft)
    return result if result == :drop || result.is_a?(Records::Draft)
  end
  nil
end

#on(conditions = nil, **keyword_conditions, &handler) ⇒ Object

Raises:

  • (ArgumentError)


16
17
18
19
20
21
22
# File 'lib/julewire/core/processing/match.rb', line 16

def on(conditions = nil, **keyword_conditions, &handler)
  raise ArgumentError, "match handler is required" unless handler

  conditions = normalize_conditions(conditions, keyword_conditions)
  @rules << Rule.new(conditions.freeze, handler)
  self
end