diff options
Diffstat (limited to 'lib/puppet/parameter/value.rb')
-rw-r--r-- | lib/puppet/parameter/value.rb | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/lib/puppet/parameter/value.rb b/lib/puppet/parameter/value.rb new file mode 100644 index 000000000..5171f2580 --- /dev/null +++ b/lib/puppet/parameter/value.rb @@ -0,0 +1,64 @@ +require 'puppet/parameter/value_collection' + +# An individual Value class. +class Puppet::Parameter::Value + attr_reader :name, :options, :event + attr_accessor :block, :call, :method, :required_features + + # Add an alias for this value. + def alias(name) + @aliases << convert(name) + end + + # Return all aliases. + def aliases + @aliases.dup + end + + # Store the event that our value generates, if it does so. + def event=(value) + @event = convert(value) + end + + def initialize(name) + if name.is_a?(Regexp) + @name = name + else + # Convert to a string and then a symbol, so things like true/false + # still show up as symbols. + @name = convert(name) + end + + @aliases = [] + + @call = :instead + end + + # Does a provided value match our value? + def match?(value) + if regex? + return true if name =~ value.to_s + else + return true if name == convert(value) + return @aliases.include?(convert(value)) + end + end + + # Is our value a regex? + def regex? + @name.is_a?(Regexp) + end + + private + + # A standard way of converting all of our values, so we're always + # comparing apples to apples. + def convert(value) + if value == '' + # We can't intern an empty string, yay. + value + else + value.to_s.to_sym + end + end +end |