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