799c38e14e
Maintain the old behavior in the case where the optional second parameter isn't passed. Also, adding arity is backwards incompatible since stdlib still supports 2.7, so remove that.
30 lines
707 B
Ruby
30 lines
707 B
Ruby
#
|
|
# parseyaml.rb
|
|
#
|
|
|
|
module Puppet::Parser::Functions
|
|
newfunction(:parseyaml, :type => :rvalue, :doc => <<-EOS
|
|
This function accepts YAML as a string and converts it into the correct
|
|
Puppet structure.
|
|
|
|
The optional second argument can be used to pass a default value that will
|
|
be returned if the parsing of YAML string have failed.
|
|
EOS
|
|
) do |arguments|
|
|
raise ArgumentError, 'Wrong number of arguments. 1 or 2 arguments should be provided.' unless arguments.length >= 1
|
|
require 'yaml'
|
|
|
|
begin
|
|
YAML::load(arguments[0]) || arguments[1]
|
|
rescue Exception => e
|
|
if arguments[1]
|
|
arguments[1]
|
|
else
|
|
raise e
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
# vim: set ts=2 sw=2 et :
|