Module: YAML

Defined in:
lib/safe_yaml.rb

Class Method Summary collapse

Class Method Details

.disable_arbitrary_object_deserialization!Object



143
144
145
146
# File 'lib/safe_yaml.rb', line 143

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



128
129
130
131
# File 'lib/safe_yaml.rb', line 128

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



138
139
140
141
# File 'lib/safe_yaml.rb', line 138

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)


133
134
135
136
# File 'lib/safe_yaml.rb', line 133

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



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

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)


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

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



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

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



53
54
55
56
57
58
59
# File 'lib/safe_yaml.rb', line 53

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



69
70
71
72
73
74
75
76
77
# File 'lib/safe_yaml.rb', line 69

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



79
80
81
# File 'lib/safe_yaml.rb', line 79

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



83
84
85
86
87
88
89
90
91
# File 'lib/safe_yaml.rb', line 83

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