12345678910111213141516171819202122232425262728 |
- 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
|