diff --git a/lib/puppet/parser/functions/regsubst.rb b/lib/puppet/parser/functions/regsubst.rb index 067d75c51..7499faaee 100644 --- a/lib/puppet/parser/functions/regsubst.rb +++ b/lib/puppet/parser/functions/regsubst.rb @@ -1,93 +1,91 @@ module Puppet::Parser::Functions newfunction(:regsubst, :type => :rvalue, - :doc => "\ - Perform regexp replacement on a string. + :doc => "Perform regexp replacement on a string. Parameters (in order): :str: The string to operate on. :regexp: The regular expression matching the string. If you want it anchored at the start and/or end of the string, you must do that with ^ and $ yourself. :replacement: Replacement string. Can contain back references to what was matched using \\0, \\1, and so on. :flags: Optional. String of single letter flags for how the regexp is interpreted: - **E** Extended regexps - **I** Ignore case in regexps - **M** Multiline regexps - **G** Global replacement; all occurances of the regexp in the string will be replaced. Without this, only the first occurance will be replaced. :lang: Optional. How to handle multibyte characters. A single-character string with the following values: - **N** None - **E** EUC - **S** SJIS - **U** UTF-8 **Examples** Get the third octet from the node's IP address: :: $i3 = regsubst($ipaddress, '^([0-9]+)[.]([0-9]+)[.]([0-9]+)[.]([0-9]+)$', '\\\\3') Put angle brackets around each octet in the node's IP address: :: - $x = regsubst($ipaddress, '([0-9]+)', '<\\\\1>', 'G') - ") \ - do |args| + $x = regsubst($ipaddress, '([0-9]+)', '<\\\\1>', 'G')") \ + do |args| flag_mapping = { "E" => Regexp::EXTENDED, "I" => Regexp::IGNORECASE, "M" => Regexp::MULTILINE, } if args.length < 3 or args.length > 5 raise Puppet::ParseError, ("regsub(): wrong number of arguments" + " (#{args.length}; min 3, max 5)") end str, regexp, replacement, flags, lang = args reflags = 0 global = false (flags or "").each_byte do |f| f = f.chr if f == "G" global = true else fvalue = flag_mapping[f] if !fvalue raise Puppet::ParseError, "regsub(): bad flag `#{f}'" end reflags |= fvalue end end re = Regexp.compile(regexp, reflags, lang) if global result = str.gsub(re, replacement) else result = str.sub(re, replacement) end return result end end diff --git a/lib/puppet/parser/functions/sprintf.rb b/lib/puppet/parser/functions/sprintf.rb index 79744104d..f6daeff49 100644 --- a/lib/puppet/parser/functions/sprintf.rb +++ b/lib/puppet/parser/functions/sprintf.rb @@ -1,17 +1,12 @@ module Puppet::Parser::Functions newfunction(:sprintf, :type => :rvalue, - :doc => "\ - Perform printf-style formatting of text. + :doc => "Perform printf-style formatting of text. - The first parameter is format string describing how the rest of the - parameters should be formatted. See the documentation for the - ``Kernel::sprintf()`` function in Ruby for all the details. - ") \ - do |args| + The first parameter is format string describing how the rest of the parameters should be formatted. See the documentation for the ``Kernel::sprintf()`` function in Ruby for all the details.") do |args| if args.length < 1 raise Puppet::ParseError, 'sprintf() needs at least one argument' end fmt = args.shift() return sprintf(fmt, *args) end end