Deletes all instances of the undef value from an array or hash.
*Examples:*
-
+
$hash = delete_undef_values({a=>'A', b=>'', c=>undef, d => false})
Would return: {a => 'A', b => '', d => false}
module Puppet::Parser::Functions
-
+
newfunction(:base64, :type => :rvalue, :doc => <<-'ENDHEREDOC') do |args|
Base64 encode or decode a string based on the command and the string submitted
$decodestring = base64('decode','dGhlc3RyaW5n')
ENDHEREDOC
-
+
require 'base64'
-
+
raise Puppet::ParseError, ("base64(): Wrong number of arguments (#{args.length}; must be = 2)") unless args.length == 2
actions = ['encode','decode']
unless actions.include?(args[0])
raise Puppet::ParseError, ("base64(): the first argument must be one of 'encode' or 'decode'")
end
-
+
unless args[1].is_a?(String)
raise Puppet::ParseError, ("base64(): the second argument must be a string to base64")
end
-
+
case args[0]
when 'encode'
result = Base64.encode64(args[1])
when 'decode'
result = Base64.decode64(args[1])
end
-
+
return result
end
end
Returns a copy of input hash or array with all undefs deleted.
*Examples:*
-
+
$hash = delete_undef_values({a=>'A', b=>'', c=>undef, d => false})
Would return: {a => 'A', b => '', d => false}
$array = delete_undef_values(['A','',undef,false])
Would return: ['A','',false]
-
+
EOS
) do |args|
raise(Puppet::ParseError,
"delete_undef_values(): Wrong number of arguments given " +
"(#{args.size})") if args.size < 1
-
- unless args[0].is_a? Array or args[0].is_a? Hash
+
+ unless args[0].is_a? Array or args[0].is_a? Hash
raise(Puppet::ParseError,
"delete_undef_values(): expected an array or hash, got #{args[0]} type #{args[0].class} ")
end
- result = args[0].dup
+ result = args[0].dup
if result.is_a?(Hash)
result.delete_if {|key, val| val.equal? :undef}
elsif result.is_a?(Array)
if not hash.is_a?(Hash)
raise(TypeError, "delete_values(): First argument must be a Hash. " + \
- "Given an argument of class #{hash.class}.")
+ "Given an argument of class #{hash.class}.")
end
hash.dup.delete_if { |key, val| item == val }
end
Will return: ["host01", "host02", ..., "host09", "host10"]
-Passing a third argument will cause the generated range to step by that
+Passing a third argument will cause the generated range to step by that
interval, e.g.
range("0", "9", "2")
"given (#{arguments.size} for 1)") if arguments.size < 1
string = arguments[0]
-
+
# If string is already Boolean, return it
if !!string == string
return string
result.should(eq(['a','c']))
end
- it "should not change origin array passed as argument" do
+ it "should not change origin array passed as argument" do
origin_array = ['a','b','c','d']
result = scope.function_delete_at([origin_array, 1])
origin_array.should(eq(['a','b','c','d']))
- end
+ end
end
result.should(eq({ 'a' => 1, 'c' => 3 }))
end
- it "should not change origin array passed as argument" do
+ it "should not change origin array passed as argument" do
origin_array = ['a','b','c','d']
result = scope.function_delete([origin_array, 'b'])
origin_array.should(eq(['a','b','c','d']))
origin_string.should(eq('foobarbabarz'))
end
- it "should not change origin hash passed as argument" do
- origin_hash = { 'a' => 1, 'b' => 2, 'c' => 3 }
+ it "should not change origin hash passed as argument" do
+ origin_hash = { 'a' => 1, 'b' => 2, 'c' => 3 }
result = scope.function_delete([origin_hash, 'b'])
origin_hash.should(eq({ 'a' => 1, 'b' => 2, 'c' => 3 }))
end
result.should(eq({'a'=>'A','c'=>'C','d'=>'undef'}))
end
- it "should not change origin array passed as argument" do
+ it "should not change origin array passed as argument" do
origin_array = ['a',:undef,'c','undef']
result = scope.function_delete_undef_values([origin_array])
origin_array.should(eq(['a',:undef,'c','undef']))
- end
+ end
- it "should not change origin hash passed as argument" do
- origin_hash = { 'a' => 1, 'b' => :undef, 'c' => 'undef' }
+ it "should not change origin hash passed as argument" do
+ origin_hash = { 'a' => 1, 'b' => :undef, 'c' => 'undef' }
result = scope.function_delete_undef_values([origin_hash])
origin_hash.should(eq({ 'a' => 1, 'b' => :undef, 'c' => 'undef' }))
- end
+ end
end
result.should(eq({ 'a'=>'A', 'B'=>'C' }))
end
- it "should not change origin hash passed as argument" do
- origin_hash = { 'a' => 1, 'b' => 2, 'c' => 3 }
+ it "should not change origin hash passed as argument" do
+ origin_hash = { 'a' => 1, 'b' => 2, 'c' => 3 }
result = scope.function_delete_values([origin_hash, 2])
origin_hash.should(eq({ 'a' => 1, 'b' => 2, 'c' => 3 }))
- end
+ end
end
result = scope.function_str2bool(["undef"])
result.should(eq(false))
end
-
+
it "should return the boolean it was called with" do
result = scope.function_str2bool([true])
result.should(eq(true))