X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fstdlib%2Flib%2Fpuppet%2Fparser%2Ffunctions%2Fparsejson.rb;h=76b392fb1d613b9a12ed2fff3cef6d9a2629a509;hb=30caaa85aed7015ca0d77216bff175eebd917eb7;hp=a9a16a4524bce8cae03456ed6217f818c61911d0;hpb=ad88f67c13ae0f1a08936dad643f1e3509ab5f40;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/stdlib/lib/puppet/parser/functions/parsejson.rb b/3rdparty/modules/stdlib/lib/puppet/parser/functions/parsejson.rb index a9a16a452..76b392fb1 100644 --- a/3rdparty/modules/stdlib/lib/puppet/parser/functions/parsejson.rb +++ b/3rdparty/modules/stdlib/lib/puppet/parser/functions/parsejson.rb @@ -1,23 +1,28 @@ # # parsejson.rb # - module Puppet::Parser::Functions - newfunction(:parsejson, :type => :rvalue, :doc => <<-EOS -This function accepts JSON as a string and converts into the correct Puppet -structure. - EOS - ) do |arguments| + newfunction(:parsejson, :type => :rvalue, :doc => <<-DOC + @summary + This function accepts JSON as a string and converts it into the correct + Puppet structure. - if (arguments.size != 1) then - raise(Puppet::ParseError, "parsejson(): Wrong number of arguments "+ - "given #{arguments.size} for 1") - end + @return + convert JSON into Puppet structure - json = arguments[0] + > *Note:* + The optional second argument can be used to pass a default value that will + be returned if the parsing of YAML string have failed. + DOC + ) do |arguments| + raise ArgumentError, 'Wrong number of arguments. 1 or 2 arguments should be provided.' unless arguments.length >= 1 - # PSON is natively available in puppet - PSON.load(json) + begin + PSON.load(arguments[0]) || arguments[1] + rescue StandardError => e + raise e unless arguments[1] + arguments[1] + end end end