(#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.
This commit is contained in:
Jeff McCune 2011-05-25 12:38:15 -07:00
parent e757816a95
commit d381a5b74f

View file

@ -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