Module: YAML

Defined in:
lib/safe_yaml.rb

Class Method Summary collapse

Class Method Details

.disable_arbitrary_object_deserialization!Object



151
152
153
154
# File 'lib/safe_yaml.rb', line 151

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



136
137
138
139
# File 'lib/safe_yaml.rb', line 136

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



146
147
148
149
# File 'lib/safe_yaml.rb', line 146

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)


141
142
143
144
# File 'lib/safe_yaml.rb', line 141

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



131
132
133
134
# File 'lib/safe_yaml.rb', line 131

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)


126
127
128
129
# File 'lib/safe_yaml.rb', line 126

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



69
70
71
72
# File 'lib/safe_yaml.rb', line 69

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



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

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



77
78
79
80
81
82
83
84
85
# File 'lib/safe_yaml.rb', line 77

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



87
88
89
# File 'lib/safe_yaml.rb', line 87

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



91
92
93
94
95
96
97
98
99
# File 'lib/safe_yaml.rb', line 91

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