Class: Lutaml::UmlRepository::StaticSite::Serializers::PackageTreeBuilder

Inherits:
Object
  • Object
show all
Includes:
Lutaml::Uml::ModelHelpers
Defined in:
lib/lutaml/uml_repository/static_site/serializers/package_tree_builder.rb

Instance Method Summary collapse

Methods included from Lutaml::Uml::ModelHelpers

#class_type_for, #format_cardinality, #normalize_stereotypes, #parse_cardinality, #qualified_name_for

Constructor Details

#initialize(repository, id_generator) ⇒ PackageTreeBuilder

Returns a new instance of PackageTreeBuilder.



12
13
14
15
# File 'lib/lutaml/uml_repository/static_site/serializers/package_tree_builder.rb', line 12

def initialize(repository, id_generator)
  @repository = repository
  @id_generator = id_generator
end

Instance Method Details

#buildObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/lutaml/uml_repository/static_site/serializers/package_tree_builder.rb', line 17

def build
  root_packages = if @repository.document.respond_to?(:packages) &&
      @repository.document.packages
                    @repository.document.packages
                  else
                    @repository.packages_index.select do |pkg|
                      !pkg.respond_to?(:namespace) ||
                        pkg.namespace.nil? ||
                        !pkg.namespace.is_a?(Lutaml::Uml::Package)
                    end
                  end

  if root_packages.size == 1
    build_tree_node(root_packages.first)
  else
    {
      id: "root",
      name: "Model",
      path: "",
      classCount: 0,
      children: root_packages.map { |pkg| build_tree_node(pkg) },
    }
  end
end