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

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

Instance Method Summary collapse

Instance Method Details

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



261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
# File 'lib/lutaml/store/package_transport.rb', line 261

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

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

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

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

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



279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
# File 'lib/lutaml/store/package_transport.rb', line 279

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

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

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

    write_assets_zip(zf, package_store)
  end
end