diff options
author | Ken Barber <ken@bob.sh> | 2012-03-07 15:33:58 -0800 |
---|---|---|
committer | Ken Barber <ken@bob.sh> | 2012-03-07 15:33:58 -0800 |
commit | e0eadf2e61994f083d9e158a4eef7f05a97a60f5 (patch) | |
tree | 44dccf99e8f7ebbcf3d8a061ee3a467689385d94 /lib/puppet/parser/functions | |
parent | 898ff80fa762dbbe52f50b872dd1bf3b04c254c9 (diff) | |
parent | 41b07232e464f25403a8f9c786ec0061bf6dc40e (diff) | |
download | puppet-stdlib-e0eadf2e61994f083d9e158a4eef7f05a97a60f5.tar.gz puppet-stdlib-e0eadf2e61994f083d9e158a4eef7f05a97a60f5.tar.bz2 |
Merge pull request #47 from jeffmccune/feature/2.3.x/validate_re_better_error_messages
(#12357) Add ability to display an error message from validate_re
Diffstat (limited to 'lib/puppet/parser/functions')
-rw-r--r-- | lib/puppet/parser/functions/validate_re.rb | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/puppet/parser/functions/validate_re.rb b/lib/puppet/parser/functions/validate_re.rb index 8033ca3..9c216d8 100644 --- a/lib/puppet/parser/functions/validate_re.rb +++ b/lib/puppet/parser/functions/validate_re.rb @@ -1,5 +1,4 @@ module Puppet::Parser::Functions - newfunction(:validate_re, :doc => <<-'ENDHEREDOC') do |args| Perform simple validation of a string against one or more regular expressions. The first argument of this function should be a string to @@ -8,6 +7,9 @@ module Puppet::Parser::Functions of the regular expressions match the string passed in, compilation will abort with a parse error. + If a third argument is specified, this will be the error message raised and + seen by the user. + The following strings will validate against the regular expressions: validate_re('one', '^one$') @@ -17,17 +19,20 @@ module Puppet::Parser::Functions validate_re('one', [ '^two', '^three' ]) + A helpful error message can be returned like this: + + validate_re($::puppetversion, '^2.7', 'The $puppetversion fact value does not match 2.7') + ENDHEREDOC - if args.length != 2 then - raise Puppet::ParseError, ("validate_re(): wrong number of arguments (#{args.length}; must be 2)") + if (args.length < 2) or (args.length > 3) then + raise Puppet::ParseError, ("validate_re(): wrong number of arguments (#{args.length}; must be 2 or 3)") end - msg = "validate_re(): #{args[0].inspect} does not match #{args[1].inspect}" + msg = args[2] || "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 |