diff options
author | Jeff McCune <jeff@puppetlabs.com> | 2011-05-25 12:38:15 -0700 |
---|---|---|
committer | Jeff McCune <jeff@puppetlabs.com> | 2011-05-25 12:38:15 -0700 |
commit | d381a5b74f923e520a5af30e2d6b816d797ac015 (patch) | |
tree | b1e85790153138e8147ce67f54de26087465f393 /lib/puppet/parser/functions | |
parent | e757816a95aae78552516eea8cd6cbd50f72f9e9 (diff) | |
download | puppet-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.
Diffstat (limited to 'lib/puppet/parser/functions')
-rw-r--r-- | lib/puppet/parser/functions/validate_re.rb | 35 |
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 |