Module: YAML

Defined in:
lib/safe_yaml.rb

Class Method Summary collapse

Class Method Details

.disable_arbitrary_object_deserialization!Object



122
123
124
125
# File 'lib/safe_yaml.rb', line 122

def disable_arbitrary_object_deserialization!
  warn_of_deprecated_method("set the SafeYAML::OPTIONS[:default_mode] to either :safe or :unsafe")
  SafeYAML::OPTIONS[:default_mode] = :safe
end

.disable_symbol_parsing!Object



107
108
109
110
# File 'lib/safe_yaml.rb', line 107

def disable_symbol_parsing!
  warn_of_deprecated_method("set the SafeYAML::OPTIONS[:deserialize_symbols] option instead")
  SafeYAML::OPTIONS[:deserialize_symbols] = false
end

.enable_arbitrary_object_deserialization!Object



117
118
119
120
# File 'lib/safe_yaml.rb', line 117

def enable_arbitrary_object_deserialization!
  warn_of_deprecated_method("set the SafeYAML::OPTIONS[:default_mode] to either :safe or :unsafe")
  SafeYAML::OPTIONS[:default_mode] = :unsafe
end

.enable_arbitrary_object_deserialization?Boolean

Returns:

  • (Boolean)


112
113
114
115
# File 'lib/safe_yaml.rb', line 112

def enable_arbitrary_object_deserialization?
  warn_of_deprecated_method("set the SafeYAML::OPTIONS[:default_mode] to either :safe or :unsafe")
  SafeYAML::OPTIONS[:default_mode] == :unsafe
end

.enable_symbol_parsing!Object



102
103
104
105
# File 'lib/safe_yaml.rb', line 102

def enable_symbol_parsing!
  warn_of_deprecated_method("set the SafeYAML::OPTIONS[:deserialize_symbols] option instead")
  SafeYAML::OPTIONS[:deserialize_symbols] = true
end

.enable_symbol_parsing?Boolean

Returns:

  • (Boolean)


97
98
99
100
# File 'lib/safe_yaml.rb', line 97

def enable_symbol_parsing?
  warn_of_deprecated_method("set the SafeYAML::OPTIONS[:deserialize_symbols] option instead")
  SafeYAML::OPTIONS[:deserialize_symbols]
end

.load_file_with_options(file, options = {}) ⇒ Object Also known as: load_file



40
41
42
43
# File 'lib/safe_yaml.rb', line 40

def self.load_file_with_options(file, options={})
  safe_mode = safe_mode_from_options("load_file", options)
  safe_mode == :safe ? safe_load_file(file) : unsafe_load_file(file)
end

.load_with_options(yaml, *filename_and_options) ⇒ Object Also known as: load



32
33
34
35
36
37
38
# File 'lib/safe_yaml.rb', line 32

def self.load_with_options(yaml, *filename_and_options)
  options   = filename_and_options.last || {}
  safe_mode = safe_mode_from_options("load", options)
  arguments = [yaml]
  arguments << filename_and_options.first if SafeYAML::MULTI_ARGUMENT_YAML_LOAD
  safe_mode == :safe ? safe_load(*arguments) : unsafe_load(*arguments)
end

.safe_load(yaml) ⇒ Object



48
49
50
51
52
53
54
55
56
# File 'lib/safe_yaml.rb', line 48

def self.safe_load(yaml, filename=nil)
  safe_resolver = SafeYAML::PsychResolver.new
  tree = if SafeYAML::MULTI_ARGUMENT_YAML_LOAD
    Psych.parse(yaml, filename)
  else
    Psych.parse(yaml)
  end
  return safe_resolver.resolve_node(tree)
end

.safe_load_file(filename) ⇒ Object



58
59
60
# File 'lib/safe_yaml.rb', line 58

def self.safe_load_file(filename)
  File.open(filename, 'r:bom|utf-8') { |f| self.safe_load f, filename }
end

.unsafe_load_file(filename) ⇒ Object



62
63
64
65
66
67
68
69
70
# File 'lib/safe_yaml.rb', line 62

def self.unsafe_load_file(filename)
  if SafeYAML::MULTI_ARGUMENT_YAML_LOAD
    # https://github.com/tenderlove/psych/blob/v1.3.2/lib/psych.rb#L296-298
    File.open(filename, 'r:bom|utf-8') { |f| self.unsafe_load f, filename }
  else
    # https://github.com/tenderlove/psych/blob/v1.2.2/lib/psych.rb#L231-233
    self.unsafe_load File.open(filename)
  end
end