module Puppet::Util::Yaml

Constants

YamlLoadExceptions

Public Class Methods

dump(structure, filename) click to toggle source
   # File lib/puppet/util/yaml.rb
45 def self.dump(structure, filename)
46   Puppet::FileSystem.replace_file(filename, 0660) do |fh|
47     YAML.dump(structure, fh)
48   end
49 end
safe_load(yaml, allowed_classes = [], filename = nil) click to toggle source

Safely load the content as YAML. By default only the following classes can be deserialized:

  • TrueClass

  • FalseClass

  • NilClass

  • Numeric

  • String

  • Array

  • Hash

Attempting to deserialize other classes will raise an YamlLoadError exception unless they are specified in the array of allowed_classes. @param [String] yaml The yaml content to parse. @param [Array] allowed_classes Additional list of classes that can be deserialized. @param [String] filename The filename to load from, used if an exception is raised. @raise [YamlLoadException] If deserialization fails. @return The parsed YAML, which can be Hash, Array or scalar types.

   # File lib/puppet/util/yaml.rb
26 def self.safe_load(yaml, allowed_classes = [], filename = nil)
27   data = YAML.safe_load(yaml, allowed_classes, [], true, filename)
28   data = false if data.nil?
29   data
30 rescue ::Psych::DisallowedClass => detail
31   path = filename ? "(#{filename})" : "(<unknown>)"
32   raise YamlLoadError.new("#{path}: #{detail.message}", detail)
33 rescue *YamlLoadExceptions => detail
34   raise YamlLoadError.new(detail.message, detail)
35 end
safe_load_file(filename, allowed_classes = []) click to toggle source

Safely load the content from a file as YAML.

@see Puppet::Util::Yaml.safe_load

   # File lib/puppet/util/yaml.rb
40 def self.safe_load_file(filename, allowed_classes = [])
41   yaml = Puppet::FileSystem.read(filename, :encoding => 'bom|utf-8')
42   safe_load(yaml, allowed_classes, filename)
43 end