summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser/functions/split.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/parser/functions/split.rb')
-rw-r--r--lib/puppet/parser/functions/split.rb28
1 files changed, 22 insertions, 6 deletions
diff --git a/lib/puppet/parser/functions/split.rb b/lib/puppet/parser/functions/split.rb
index 8932bfe38..36dba7e68 100644
--- a/lib/puppet/parser/functions/split.rb
+++ b/lib/puppet/parser/functions/split.rb
@@ -1,13 +1,29 @@
module Puppet::Parser::Functions
newfunction(:split, :type => :rvalue,
- :doc => "Split a string variable into an array using the specified split character.
+ :doc => "\
+Split a string variable into an array using the specified split regexp.
-Usage::
+ Usage::
- $string = 'value1,value2'
- $array_var = split($string, ',')
+ $string = 'v1.v2:v3.v4'
+ $array_var1 = split($string, ':')
+ $array_var2 = split($string, '[.]')
+ $array_var3 = split($string, '[.:]')
-$array_var holds the result ['value1', 'value2']") do |args|
- return args[0].split(args[1])
+$array_var1 now holds the result ['v1.v2', 'v3.v4'],
+while $array_var2 holds ['v1', 'v2:v3', 'v4'], and
+$array_var3 holds ['v1', 'v2', 'v3', 'v4'].
+
+Note that in the second example, we split on a string that contains
+a regexp meta-character (.), and that needs protection. A simple
+way to do that for a single character is to enclose it in square
+brackets.") do |args|
+
+ if args.length != 2
+ raise Puppet::ParseError, ("split(): wrong number of arguments" +
+ " (#{args.length}; must be 2)")
+ end
+
+ return args[0].split(Regexp.compile(args[1]))
end
end