Sha256: 5aa3e3004b6a872c550cf348780b6d1cf7b120ef8d205fffc0ddea611b98b8cb

Contents?: true

Size: 1.05 KB

Versions: 2

Compression:

Stored size: 1.05 KB

Contents

require "rulz/version"
require "rulz/definer"
require "rulz/condition"
require "rulz/evaluator"
require "rulz/action"
require "rulz/rule"
require "rulz/conditions/boolean"
require "rulz/conditions/number"
require "rulz/conditions/comparison"
require "rulz/conditions/container"
require "rulz/conditions/string"
require "rulz/attribute"
require "rulz/conditions/conditions"

module Rulz
  
  def self.included(base)
    base.extend(ClassMethods)
    base.send(:include, InstanceMethods)
  end
  
  module InstanceMethods
    def condition_true?(name, *args)
      Rulz::Evaluator::Condition.new(self, name, *args).evaluate
    end
    
    def condition_false?(name, *args)
      not condition_true?(name, *args)
    end
    
    def apply!(action, *args)
      Rulz::Evaluator::Action.new(self, action, *args).evaluate
    end
    
    def apply_rules!
      Rulz::Rule.rules(self.class).each { |rule| rule.apply!(self) }
    end
    
  end
  
  module ClassMethods
  
    def define_rulz(&block)
      Rulz::Definer.new(self).instance_eval &block
    end
    
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rulz-1.0.5 lib/rulz.rb
rulz-1.0.4 lib/rulz.rb