summaryrefslogtreecommitdiff
path: root/join.rb
diff options
context:
space:
mode:
authorKrzysztof Wilczynski <krzysztof.wilczynski@linux.com>2011-04-25 02:47:16 +0100
committerKrzysztof Wilczynski <krzysztof.wilczynski@linux.com>2011-04-25 02:47:16 +0100
commit914d5c2f38dd5c19d1b222c47ca6ba680277f6d6 (patch)
tree3270234b1d512eb273fc9edf4298ab766139426b /join.rb
parentbb231bdfc2acca172203039d6a1e4852ab4809b0 (diff)
Added help accessible via the :doc functionality in Puppet's newfunction.
Signed-off-by: Krzysztof Wilczynski <krzysztof.wilczynski@linux.com>
Diffstat (limited to 'join.rb')
-rw-r--r--join.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/join.rb b/join.rb
index 1d2e55d..469763a 100644
--- a/join.rb
+++ b/join.rb
@@ -4,6 +4,39 @@
module Puppet::Parser::Functions
newfunction(:join, :type => :rvalue, :doc => <<-EOS
+This function will allow to concatenate elements of an array together
+with a given suffix and optionally with prefix if such is given ...
+
+For example:
+
+Given the following sample manifest:
+
+ define iterator {
+ notice $name
+ }
+
+ $array = ['a', 'b', 'c']
+
+ $result = split(join($array, ',', 'letter_'), ',')
+
+ notice $result
+
+ iterator { $result: }
+
+This will produce the following:
+
+ notice: Scope(Class[main]): letter_a letter_b letter_c
+ notice: Scope(Iterator[letter_a]): letter_a
+ notice: Scope(Iterator[letter_b]): letter_b
+ notice: Scope(Iterator[letter_c]): letter_c
+
+Which allows you to avoid resorting to the following:
+
+ $result = split(inline_template("<%= array.collect { |i| \"letter_#{i}\" }.join(',') %>"), ',')
+
+Phasing out the need for use and abuse of the infamous inline_template
+in the example above and which in this very case is extremely ugly as
+we have to escape double-quotes to make Puppet parser not evaluate them.
EOS
) do |arguments|