summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parameter/value.rb
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2009-10-29 09:12:26 -0700
committertest branch <puppet-dev@googlegroups.com>2010-02-17 06:50:53 -0800
commit3c86666f68d50eb1a45bf1e1b81b8ffad0f3b9c1 (patch)
tree6d2e5344e4456e1bcda48f9cf512de468c44d4c8 /lib/puppet/parameter/value.rb
parent2cbd9e85259ed1742f8a54a7e5b9825d0bb79d5e (diff)
downloadpuppet-3c86666f68d50eb1a45bf1e1b81b8ffad0f3b9c1.tar.gz
puppet-3c86666f68d50eb1a45bf1e1b81b8ffad0f3b9c1.tar.xz
puppet-3c86666f68d50eb1a45bf1e1b81b8ffad0f3b9c1.zip
Moving Parameter utility classes into separate files
Signed-off-by: Luke Kanies <luke@madstop.com>
Diffstat (limited to 'lib/puppet/parameter/value.rb')
-rw-r--r--lib/puppet/parameter/value.rb64
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