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