-
Notifications
You must be signed in to change notification settings - Fork 575
Expand file tree
/
Copy pathparsepson.rb
More file actions
33 lines (28 loc) · 947 Bytes
/
parsepson.rb
File metadata and controls
33 lines (28 loc) · 947 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# frozen_string_literal: true
#
# parsepson.rb
#
module Puppet::Parser::Functions
newfunction(:parsepson, type: :rvalue, doc: <<-DOC
@summary
This function accepts PSON, a Puppet variant of JSON, as a string and then converts it into the correct
Puppet structure
@return
convert PSON into Puppet structure
> *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.
For more information on PSON please see the following link:
https://puppet.com/docs/puppet/7/http_api/pson.html
DOC
) do |arguments|
raise ArgumentError, 'Wrong number of arguments. 1 or 2 arguments should be provided.' unless arguments.length >= 1
begin
PSON.load(arguments[0]) || arguments[1]
rescue StandardError => e
raise e unless arguments[1]
arguments[1]
end
end
end
# vim: set ts=2 sw=2 et :