summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff McCune <jeff@puppetlabs.com>2011-05-25 12:38:15 -0700
committerJeff McCune <jeff@puppetlabs.com>2011-05-25 12:38:15 -0700
commitd381a5b74f923e520a5af30e2d6b816d797ac015 (patch)
treeb1e85790153138e8147ce67f54de26087465f393
parente757816a95aae78552516eea8cd6cbd50f72f9e9 (diff)
downloadpuppet-stdlib-d381a5b74f923e520a5af30e2d6b816d797ac015.tar.gz
puppet-stdlib-d381a5b74f923e520a5af30e2d6b816d797ac015.tar.bz2
(#7657) Add basic validate_re function
While developing Puppet Modules with class parameters, data from the user should be validated as per the Style Guide. Puppet should fail early and hard in the situation of invalid data being passed into the module. This function provides a more concise method to the alternative of using if statements in the Puppet manifests.
-rw-r--r--lib/puppet/parser/functions/validate_re.rb35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/puppet/parser/functions/validate_re.rb b/lib/puppet/parser/functions/validate_re.rb
new file mode 100644
index 0000000..583f26a
--- /dev/null
+++ b/lib/puppet/parser/functions/validate_re.rb
@@ -0,0 +1,35 @@
+module Puppet::Parser::Functions
+
+ newfunction(:validate_re, :doc => <<-'ENDHEREDOC') do |args|
+ Perform simple validation of a string against a regular expression. The second
+ argument of the function should be a string regular expression (without the //'s)
+ or an array of regular expressions. If none of the regular expressions in the array
+ match the string passed in, then an exception will be raised.
+
+ Example:
+
+ These strings validate against the regular expressions
+
+ validate_re('one', '^one$')
+ validate_re('one', [ '^one', '^two' ])
+
+ These strings do NOT validate
+
+ validate_re('one', [ '^two', '^three' ])
+
+ Jeff McCune <jeff@puppetlabs.com>
+
+ ENDHEREDOC
+ if args.length != 2 then
+ raise Puppet::ParseError, ("validate_re(): wrong number of arguments (#{args.length}; must be 2)")
+ end
+
+ msg = "validate_re(): #{args[0].inspect} does not match #{args[1].inspect}"
+
+ raise Puppet::ParseError, (msg) unless args[1].any? do |re_str|
+ args[0] =~ Regexp.compile(re_str)
+ end
+
+ end
+
+end