76b392fb1d613b9a12ed2fff3cef6d9a2629a509
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / lib / puppet / parser / functions / parsejson.rb
1 #
2 # parsejson.rb
3 #
4 module Puppet::Parser::Functions
5   newfunction(:parsejson, :type => :rvalue, :doc => <<-DOC
6     @summary
7       This function accepts JSON as a string and converts it into the correct
8       Puppet structure.
9
10     @return
11       convert JSON into Puppet structure
12
13     > *Note:*
14       The optional second argument can be used to pass a default value that will
15       be returned if the parsing of YAML string have failed.
16   DOC
17              ) do |arguments|
18     raise ArgumentError, 'Wrong number of arguments. 1 or 2 arguments should be provided.' unless arguments.length >= 1
19
20     begin
21       PSON.load(arguments[0]) || arguments[1]
22     rescue StandardError => e
23       raise e unless arguments[1]
24       arguments[1]
25     end
26   end
27 end
28
29 # vim: set ts=2 sw=2 et :