Module: YAML
- Defined in:
- lib/safe_yaml.rb
Class Method Summary collapse
- .disable_arbitrary_object_deserialization! ⇒ Object
- .disable_symbol_parsing! ⇒ Object
- .enable_arbitrary_object_deserialization! ⇒ Object
- .enable_arbitrary_object_deserialization? ⇒ Boolean
- .enable_symbol_parsing! ⇒ Object
- .enable_symbol_parsing? ⇒ Boolean
- .load_file_with_options(file, options = {}) ⇒ Object (also: load_file)
- .load_with_options(yaml, *filename_and_options) ⇒ Object (also: load)
- .safe_load(yaml) ⇒ Object
- .safe_load_file(filename) ⇒ Object
- .unsafe_load_file(filename) ⇒ Object
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
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
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.(file, ={}) safe_mode = ("load_file", ) 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.(yaml, *) = .last || {} safe_mode = ("load", ) arguments = [yaml] arguments << .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 |