forked from jippi/puppet-php
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
By default extension setting keys are now prefixed with "<name>.". If the prefix is already present, nothing is changed. This allows for simpler extension configuration by simply passing the setting name without prefix. Fixes jippi#81
- Loading branch information
Showing
3 changed files
with
80 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
|
||
module Puppet::Parser::Functions | ||
newfunction(:ensure_prefix, :type => :rvalue, :doc => <<-EOS | ||
This function ensures a prefix for all elements in an array or the keys in a hash. | ||
*Examples:* | ||
ensure_prefix({'a' => 1, 'b' => 2, 'p.c' => 3}, 'p.') | ||
Will return: | ||
{ | ||
'p.a' => 1, | ||
'p.b' => 2, | ||
'p.c' => 3, | ||
} | ||
ensure_prefix(['a', 'p.b', 'c'], 'p.') | ||
Will return: | ||
['p.a', 'p.b', 'p.c'] | ||
EOS | ||
) do |arguments| | ||
|
||
raise(Puppet::ParseError, "ensure_prefix(): Wrong number of arguments " + | ||
"given (#{arguments.size} for 2)") if arguments.size < 2 | ||
|
||
enumerable = arguments[0] | ||
|
||
unless enumerable.is_a?(Array) or enumerable.is_a?(Hash) | ||
raise Puppet::ParseError, "ensure_prefix(): expected first argument to be an Array or a Hash, got #{enumerable.inspect}" | ||
end | ||
|
||
prefix = arguments[1] if arguments[1] | ||
|
||
if prefix | ||
unless prefix.is_a?(String) | ||
raise Puppet::ParseError, "ensure_prefix(): expected second argument to be a String, got #{prefix.inspect}" | ||
end | ||
end | ||
|
||
if enumerable.is_a?(Array) | ||
# Turn everything into string same as join would do ... | ||
result = enumerable.collect do |i| | ||
i = i.to_s | ||
prefix && !i.start_with?(prefix) ? prefix + i : i | ||
end | ||
else | ||
result = Hash[enumerable.map do |k,v| | ||
k = k.to_s | ||
[ prefix && !k.start_with?(prefix) ? prefix + k : k, v ] | ||
end] | ||
end | ||
|
||
return result | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters