Class: Engine::Serialization::YamlPersistence

Inherits:
Object
  • Object
show all
Defined in:
lib/engine/serialization/yaml_persistence.rb

Class Method Summary collapse

Class Method Details

.load(path) ⇒ Object



29
30
31
32
33
# File 'lib/engine/serialization/yaml_persistence.rb', line 29

def load(path)
  data = YAML.load_file(path, permitted_classes: [Symbol])
  data_array = data.is_a?(Array) ? data : [data]
  GraphSerializer.deserialize(data_array).first
end

.load_all(paths) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/engine/serialization/yaml_persistence.rb', line 35

def load_all(paths)
  data_array = paths.flat_map do |path|
    data = YAML.load_file(path, permitted_classes: [Symbol])
    data.is_a?(Array) ? data : [data]
  end
  GraphSerializer.deserialize(data_array)
end

.save(obj, path) ⇒ Object



9
10
11
12
# File 'lib/engine/serialization/yaml_persistence.rb', line 9

def save(obj, path)
  data = GraphSerializer.serialize(obj)
  File.write(path, data.to_yaml)
end

.save_all(objects, path) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/engine/serialization/yaml_persistence.rb', line 14

def save_all(objects, path)
  all_data = objects.flat_map { |obj| GraphSerializer.serialize(obj) }
  seen_uuids = {}
  unique_data = all_data.select do |obj_data|
    uuid = obj_data[:uuid]
    if seen_uuids[uuid]
      false
    else
      seen_uuids[uuid] = true
      true
    end
  end
  File.write(path, unique_data.to_yaml)
end