1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
module Morpher
class Evaluator
class Predicate
# Abstract namespace class for predicate evaluators on primitives
class Primitive < self
include Nullary::Parameterized
# Evaluator for exact primitive match
class Exact < self
register :primitive
# Call evaluator
#
# @param [Object] object
#
# @return [true]
# if object's type is #equal?
#
# @api private
#
def call(object)
object.class.equal?(param)
end
end # Exact
# Evaluator for permissive primtivie match
class Permissive < self
register :is_a
# Call evaluator
#
# @param [Object] object
#
# @return [true]
# if objects type equals exactly
#
# @api private
#
def call(object)
object.kind_of?(param)
end
end # Permissive
end # Primitive
end # Predicate
end # Evaluator
end # Morpher
|