Class: Lutaml::UmlRepository::PackageExporter

Inherits:
Object
  • Object
show all
Defined in:
lib/lutaml/uml_repository/package_exporter.rb

Overview

PackageExporter handles exporting UmlRepository instances to LUR (LutaML UML Repository) package files.

LUR packages are ZIP archives containing:

  • Serialized Document model

  • Serialized indexes for fast loading

  • Metadata about the package

  • Statistics about the model

Examples:

Export with defaults

exporter = PackageExporter.new(repository)
exporter.export("model.lur")

Export with PackageMetadata

 = PackageMetadata.new(
  name: "Urban Model",
  version: "2.0",
  publisher: "City Planning",
  license: "CC-BY-4.0"
)
exporter = PackageExporter.new(repository, metadata: )
exporter.export("model.lur")

Export with metadata hash (backward compatible)

exporter = PackageExporter.new(repository,
  name: "My Model",
  version: "2.0",
  serialization_format: :yaml
)
exporter.export("model.lur")

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(repository, options = {}) ⇒ PackageExporter

Initialize a new PackageExporter.

Parameters:

  • repository (UmlRepository)

    The repository to export

  • options (Hash) (defaults to: {})

    Export options

Options Hash (options):

  • :metadata (PackageMetadata, Hash)

    Package metadata (can be PackageMetadata object or Hash)

  • :serialization_format (Symbol) — default: :marshal

    Format for Document serialization (:marshal or :yaml)

  • :include_xmi (Boolean) — default: false

    Include source XMI in package

  • :compression_level (Integer) — default: 6

    ZIP compression level (0-9)

  • :name (String) — default: "UML Model"

    Package name (deprecated, use :metadata)

  • :version (String) — default: "1.0"

    Package version (deprecated, use :metadata)



66
67
68
69
70
# File 'lib/lutaml/uml_repository/package_exporter.rb', line 66

def initialize(repository, options = {})
  @repository = repository
  @options = default_options.merge(options)
  @metadata = (@options)
end

Instance Attribute Details

#metadataPackageMetadata (readonly)

Returns The package metadata.

Returns:



48
49
50
# File 'lib/lutaml/uml_repository/package_exporter.rb', line 48

def 
  @metadata
end

#optionsHash (readonly)

Returns Export options.

Returns:

  • (Hash)

    Export options



45
46
47
# File 'lib/lutaml/uml_repository/package_exporter.rb', line 45

def options
  @options
end

#repositoryUmlRepository (readonly)

Returns The repository being exported.

Returns:



42
43
44
# File 'lib/lutaml/uml_repository/package_exporter.rb', line 42

def repository
  @repository
end

Instance Method Details

#export(output_path) ⇒ void

This method returns an undefined value.

Export the repository to a LUR package file.

Examples:

exporter.export("model.lur")

Parameters:

  • output_path (String)

    Path for the output .lur file

Raises:

  • (ArgumentError)

    If serialization format is invalid



79
80
81
82
83
84
85
86
87
88
89
# File 'lib/lutaml/uml_repository/package_exporter.rb', line 79

def export(output_path)
  validate_options!

  Zip::File.open(output_path, create: true) do |zip|
    (zip)
    write_document(zip)
    write_indexes(zip)
    write_index_tree(zip)
    write_statistics(zip)
  end
end