--- /dev/null
+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