module Rubanok::DSL::Matching::ClassMethods
Public Instance Methods
match(*fields, activate_on: fields, activate_always: false, fail_when_no_matches: nil, &block)
click to toggle source
# File lib/rubanok/dsl/matching.rb, line 70 def match(*fields, activate_on: fields, activate_always: false, fail_when_no_matches: nil, &block) rule = Rule.new(fields, activate_on: activate_on, activate_always: activate_always) rule.instance_eval(&block) define_method(rule.to_method_name) do |params = {}| params ||= {} if params.nil? clause = rule.matching_clause(params) if clause apply_rule! clause, params else default_match_handler(rule, params, fail_when_no_matches) end end rule.clauses.each do |clause| define_method(clause.to_method_name, &clause.block) end add_rule rule end