From d381a5b74f923e520a5af30e2d6b816d797ac015 Mon Sep 17 00:00:00 2001 From: Jeff McCune Date: Wed, 25 May 2011 12:38:15 -0700 Subject: (#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. --- lib/puppet/parser/functions/validate_re.rb | 35 ++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 lib/puppet/parser/functions/validate_re.rb 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 + + 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 -- cgit v1.2.3