Class: Moneta::Transforms::YAML

Inherits:
Moneta::Transform::Serializer show all
Defined in:
lib/moneta/transforms/yaml.rb

Overview

Serializes objects to text as YAML

Instance Method Summary collapse

Methods inherited from Moneta::Transform::Serializer

#decodable?, #decode, delegate_to, #encode

Methods inherited from Moneta::Transform

#decodable?, #decode, delegate_to, #encode, #method_missing, #respond_to_missing?

Constructor Details

#initialize(safe: false, **options) ⇒ YAML

Returns a new instance of YAML.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/moneta/transforms/yaml.rb', line 7

def initialize(safe: false, **options)
  super
  @load_method =
    if safe
      ::YAML.method(:safe_load)
    else
      ::YAML.respond_to?(:unsafe_load) ? ::YAML.method(:unsafe_load) : ::YAML.method(:load)
    end

  @load_positional_options, @load_keyword_options = setup_yaml_options(@load_method, options)

  @dump_method =
    if safe && ::YAML.respond_to?(:safe_dump)
      ::YAML.method(:safe_dump)
    else
      ::YAML.method(:dump)
    end

  @dump_positional_options, @dump_keyword_options = setup_yaml_options(@dump_method, options)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Moneta::Transform

Instance Method Details

#deserialize(value) ⇒ Object



32
33
34
# File 'lib/moneta/transforms/yaml.rb', line 32

def deserialize(value)
  @load_method.call(value, *@load_positional_options, **@load_keyword_options)
end

#serialize(value) ⇒ Object



28
29
30
# File 'lib/moneta/transforms/yaml.rb', line 28

def serialize(value)
  @dump_method.call(value, *@dump_positional_options, **@dump_keyword_options)
end