Sha256: cc8984d973b4cbb8442b0b78dbccba85be2fc7b8ee581c7d98753716cf086b62
Contents?: true
Size: 1.07 KB
Versions: 6
Compression:
Stored size: 1.07 KB
Contents
module Rulz module Attribute class Block def initialize(attr, klass, &block) @attr = attr @klass = klass instance_eval &block end def condition(name, &block) Rulz::Attribute::Condition.new(@klass, @attr, name, block) end def type(kind) Rulz::Conditions.load_conditions(@klass, @attr, kind) end end class Condition attr_reader :name, :proc def initialize(klass, attr, name, proc) @name = name @proc = proc klass.instance_exec self do |condition| conditions = instance_variable_get("@rulz_#{attr}_conditions") || [] conditions << condition instance_variable_set("@rulz_#{attr}_conditions", conditions) end end def self.find(klass, attr, name) result = klass.instance_variable_get("@rulz_#{attr}_conditions").find {|c| c.name == name } raise ArgumentError, "Condition '#{name}' for '#{attr}' does not exist" unless result result end end end end
Version data entries
6 entries across 6 versions & 1 rubygems