Sha256: dd3579a254de6d528707602350be582f2d04fbd1bc4479fb15923b006353ac9f

Contents?: true

Size: 1004 Bytes

Versions: 3

Compression:

Stored size: 1004 Bytes

Contents

require "rulz/version"
require "rulz/definer"
require "rulz/condition"
require "rulz/evaluator"
require "rulz/action"
require "rulz/rule"
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

3 entries across 3 versions & 1 rubygems

Version Path
rulz-1.0.2 lib/rulz.rb
rulz-1.0.1 lib/rulz.rb
rulz-1.0.0 lib/rulz.rb