class Strategize::Rule

The Rule class represents a predicate function that can be run against a specific subject.

Define a new rule Rule.new :rule_name, -> { code to execute }

Evaluate a rule rule = Rule.new :rule_name, -> { true } rule.evaluate(nil) #=> true

Attributes

name[R]
predicate[R]

Public Class Methods

new(name, predicate) click to toggle source

Create a new rule

@param name [Symbol] a descriptive name for the rule @param predicate [Proc] code block to be executed

# File lib/strategize/rules/rule.rb, line 18
def initialize(name, predicate)
  unless predicate.respond_to?(:call)
    raise InvalidPredicateError, 'Invalid predicate function passed'
  end

  @name = name
  @predicate = predicate
end

Public Instance Methods

evaluate(subject) click to toggle source

Execute the predicate against the subject

@param subject [Object] @return [Boolean]

# File lib/strategize/rules/rule.rb, line 31
def evaluate(subject)
  subject.instance_exec(&@predicate)
end