Class: Lutaml::Store::PackageTransport::ZipTransport

Inherits:
Base
  • Object
show all
Defined in:
lib/lutaml/store/package_transport/zip_transport.rb

Instance Method Summary collapse

Instance Method Details

#read(path, package_store, format: nil) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/lutaml/store/package_transport/zip_transport.rb', line 9

def read(path, package_store, format: nil)
  definition = package_store.definition
  global_format = format

  Zip::File.open(path) do |zip_file|
    (zip_file, package_store)

    definition.model_entries.each do |entry|
      fmt_name = global_format || entry.default_format
      read_model_entry_zip(zip_file, entry, package_store, fmt_name)
    end

    definition.asset_entries.each do |entry|
      read_asset_entry_zip(zip_file, entry, package_store)
    end
  end
end

#write(path, package_store, formats: {}) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/lutaml/store/package_transport/zip_transport.rb', line 27

def write(path, package_store, formats: {})
  definition = package_store.definition
  FileUtils.mkdir_p(File.dirname(path))

  Zip::File.open(path, create: true) do |zip_file|
    (zip_file, package_store)

    definition.model_entries.each do |entry|
      fmt_name = effective_format(entry, formats)
      fmt = resolve_format(fmt_name)
      write_model_entry_zip(zip_file, entry, package_store, fmt)
    end

    write_assets_zip(zip_file, package_store)
  end
end