class SetBuilder::Constraint
Attributes
direct_object[R]
modifiers[R]
negative[R]
trait[R]
Public Class Methods
new(trait, *args, &block)
click to toggle source
Sample constraints:
[:awesome], [:attended, "school"], [:died], [:name, {:is => "Jerome"}]]
# File lib/set_builder/constraint.rb, line 16 def initialize(trait, *args, &block) @trait, @block = trait, block @direct_object = args.shift if trait.requires_direct_object? @modifiers = trait.modifiers.collect {|modifier_type| modifier_type.new(args.shift)} end
Public Instance Methods
negate(value)
click to toggle source
# File lib/set_builder/constraint.rb, line 52 def negate(value) @negative = value @negative = false if trait.noun? self end
perform(scope)
click to toggle source
# File lib/set_builder/constraint.rb, line 60 def perform(scope) scope.scoped(@block.call(self, scope)) end
to_s()
click to toggle source
# File lib/set_builder/constraint.rb, line 40 def to_s # p "ValueMap.to_s(#{direct_object_type} (#{direct_object_type.class}), #{direct_object} (#{direct_object.class}))" @description ||= begin description = trait.to_s(@negative) description << " #{ValueMap.to_s(direct_object_type, direct_object)}" if direct_object_required? description << " #{modifiers.collect{|m| m.to_s(@negative)}.join(" ")}" unless modifiers.empty? description end end
valid?()
click to toggle source
# File lib/set_builder/constraint.rb, line 34 def valid? (!direct_object_required? or !direct_object.nil?) and modifiers.all?(&:valid?) end