diff --git a/lib/puppet/parser/functions/regsubst.rb b/lib/puppet/parser/functions/regsubst.rb index 067d75c51..c79983351 100644 --- a/lib/puppet/parser/functions/regsubst.rb +++ b/lib/puppet/parser/functions/regsubst.rb @@ -1,93 +1,69 @@ 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): - Parameters (in order): +:str: The string to operate on. - :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. - :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. - :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: - :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 occurrences of the regexp in the string will be replaced. Without this, only the first occurrence will be replaced. - - **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 - :lang: - Optional. How to handle multibyte characters. A - single-character string with the following values: +**Examples** - - **N** - None - - **E** - EUC - - **S** - SJIS - - **U** - UTF-8 +Get the third octet from the node's IP address:: - **Examples** + $i3 = regsubst($ipaddress,'^([0-9]+)[.]([0-9]+)[.]([0-9]+)[.]([0-9]+)$','\\3') - Get the third octet from the node's IP address: :: +Put angle brackets around each octet in 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