Module: Puppet::Confine::Boolean
Instance Method Summary collapse
-
#passing_value ⇒ Object
Returns the passing value for the Boolean confine.
-
#values ⇒ Object
The Boolean confines ‘true’ and ‘false’ let the user specify two types of values: * A lambda for lazy evaluation.
Instance Method Details
#passing_value ⇒ Object
Returns the passing value for the Boolean confine.
10 11 12 |
# File 'lib/puppet/confine/boolean.rb', line 10 def passing_value raise NotImplementedError, "The Boolean confine %{confine} must provide the passing value." % { confine: self.class.name } end |
#values ⇒ Object
The Boolean confines ‘true’ and ‘false’ let the user specify two types of values:
* A lambda for lazy evaluation. This would be something like
confine :true => lambda { true }
* A single Boolean value, or an array of Boolean values. This would
be something like
confine :true => true OR confine :true => [true, false, false, true]
This override distinguishes between the two cases.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/puppet/confine/boolean.rb', line 24 def values # Note that Puppet::Confine's constructor ensures that @values # will always be an array, even if a lambda's passed in. This is # why we have the length == 1 check. unless @values.length == 1 && @values.first.respond_to?(:call) return @values end # We have a lambda. Here, we want to enforce "cache positive" # behavior, which is to cache the result _if_ it evaluates to # the passing value (i.e. the class name). return @cached_value unless @cached_value.nil? # Double negate to coerce the value into a Boolean calculated_value = !!@values.first.call if calculated_value == passing_value @cached_value = [calculated_value] end [calculated_value] end |