28 lines
728 B
Ruby
28 lines
728 B
Ruby
require 'json'
|
|
|
|
def array_of_hash?(list)
|
|
return false unless !list.empty? && list.class == Array
|
|
list.each do |e|
|
|
return false unless e.class == Hash
|
|
end
|
|
true
|
|
end
|
|
|
|
module Puppet::Parser::Functions
|
|
newfunction(:check_array_of_hash, :arity =>1, :type => :rvalue, :doc => "Check
|
|
input String is a valid Array of Hash in JSON style") do |arg|
|
|
if arg[0].class == String
|
|
begin
|
|
list = JSON.load(arg[0].gsub("'","\""))
|
|
rescue JSON::ParserError
|
|
raise Puppet::ParseError, "Syntax error: #{arg[0]} is invalid"
|
|
else
|
|
return arg[0] if array_of_hash?(list)
|
|
end
|
|
else
|
|
raise Puppet::ParseError, "Syntax error: #{arg[0]} is not a String"
|
|
end
|
|
return ''
|
|
end
|
|
end
|