lib/inch/evaluation/role/base.rb in inch-0.2.3 vs lib/inch/evaluation/role/base.rb in inch-0.3.0.rc1
- old
+ new
@@ -5,9 +5,28 @@
module Role
# @abstract
class Base
attr_reader :object
+ class << self
+ def applicable_if(symbol = nil, &block)
+ @applicable_procs ||= {}
+ @applicable_procs[to_s] = block || symbol.to_proc
+ end
+
+ def applicable_unless(symbol = nil, &block)
+ @applicable_procs ||= {}
+ @applicable_procs[to_s] = proc do |object|
+ !(block || symbol.to_proc).call(object)
+ end
+ end
+
+ def applicable?(object)
+ @applicable_procs ||= {}
+ @applicable_procs[to_s].call(object)
+ end
+ end
+
def initialize(object, value = nil)
@object = object
@value = value
end