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
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
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
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.(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
32 33 34 35 36 37 38 |
# File 'lib/safe_yaml.rb', line 32 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
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 |