Module: Lutaml::UmlRepository::StaticSite

Defined in:
lib/lutaml/uml_repository/static_site.rb,
lib/lutaml/uml_repository/static_site/models.rb,
lib/lutaml/uml_repository/static_site/output.rb,
lib/lutaml/uml_repository/static_site/generator.rb,
lib/lutaml/uml_repository/static_site/serializers.rb,
lib/lutaml/uml_repository/static_site/id_generator.rb,
lib/lutaml/uml_repository/static_site/configuration.rb,
lib/lutaml/uml_repository/static_site/models/spa_base.rb,
lib/lutaml/uml_repository/static_site/output/strategy.rb,
lib/lutaml/uml_repository/static_site/data_transformer.rb,
lib/lutaml/uml_repository/static_site/models/spa_class.rb,
lib/lutaml/uml_repository/static_site/serializers/base.rb,
lib/lutaml/uml_repository/static_site/models/spa_diagram.rb,
lib/lutaml/uml_repository/static_site/models/spa_literal.rb,
lib/lutaml/uml_repository/static_site/models/spa_package.rb,
lib/lutaml/uml_repository/static_site/models/spa_document.rb,
lib/lutaml/uml_repository/static_site/models/spa_metadata.rb,
lib/lutaml/uml_repository/static_site/models/spa_attribute.rb,
lib/lutaml/uml_repository/static_site/models/spa_operation.rb,
lib/lutaml/uml_repository/static_site/models/spa_parameter.rb,
lib/lutaml/uml_repository/static_site/search_index_builder.rb,
lib/lutaml/uml_repository/static_site/models/spa_statistics.rb,
lib/lutaml/uml_repository/static_site/models/spa_association.rb,
lib/lutaml/uml_repository/static_site/models/spa_cardinality.rb,
lib/lutaml/uml_repository/static_site/models/spa_search_entry.rb,
lib/lutaml/uml_repository/static_site/models/spa_search_index.rb,
lib/lutaml/uml_repository/static_site/models/spa_tree_class_ref.rb,
lib/lutaml/uml_repository/static_site/models/spa_association_end.rb,
lib/lutaml/uml_repository/static_site/output/multi_file_strategy.rb,
lib/lutaml/uml_repository/static_site/output/vue_inlined_strategy.rb,
lib/lutaml/uml_repository/static_site/models/spa_package_tree_node.rb,
lib/lutaml/uml_repository/static_site/serializers/class_serializer.rb,
lib/lutaml/uml_repository/static_site/serializers/metadata_builder.rb,
lib/lutaml/uml_repository/static_site/models/spa_inherited_attribute.rb,
lib/lutaml/uml_repository/static_site/serializers/diagram_serializer.rb,
lib/lutaml/uml_repository/static_site/serializers/package_serializer.rb,
lib/lutaml/uml_repository/static_site/models/spa_inherited_association.rb,
lib/lutaml/uml_repository/static_site/serializers/attribute_serializer.rb,
lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb,
lib/lutaml/uml_repository/static_site/serializers/operation_serializer.rb,
lib/lutaml/uml_repository/static_site/serializers/package_tree_builder.rb,
lib/lutaml/uml_repository/static_site/serializers/association_serializer.rb

Overview

Static Site generation for UML model browsing.

Generates a single-page application (SPA) from typed UML models:

  • Vue 3 + Pinia + TypeScript frontend (pre-built IIFE)

  • lunr.js for client-side search

  • Strategy pattern for output (single-file or multi-file)

  • Full typed data layer via Lutaml::Model::Serializable

Examples:

Generate single-file SPA

repository = UmlRepository.from_package("model.lur")
Lutaml::Xmi::StaticSite.generate(repository,
  mode: :single_file,
  output: "browser.html"
)

Generate with custom configuration

config = Lutaml::Xmi::StaticSite::Configuration.load("custom.yml")
Lutaml::Xmi::StaticSite.generate(repository,
  config: config,
  mode: :multi_file,
  output: "dist/"
)

Defined Under Namespace

Modules: Models, Output, Serializers Classes: Configuration, DataTransformer, Generator, IdGenerator, SearchIndexBuilder

Class Method Summary collapse

Class Method Details

.build_search_index(repository, options = {}) ⇒ Hash

Build search index from repository

Parameters:

  • repository (UmlRepository)

    The repository to index

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

    Index options

Returns:

  • (Hash)

    Search index structure



71
72
73
74
75
76
77
78
79
80
# File 'lib/lutaml/uml_repository/static_site.rb', line 71

def build_search_index(repository, options = {})
  config = options[:config] || Configuration.load
  search_opts = {
    fields: config.search&.fields,
    document_types: config.search&.document_types,
    stop_words: config.search&.stop_words,
  }.merge(options)
  builder = SearchIndexBuilder.new(repository, search_opts)
  builder.build
end

.configuration(config_path = nil) ⇒ Configuration

Load configuration

Parameters:

  • config_path (String, nil) (defaults to: nil)

    Path to config file

Returns:



86
87
88
# File 'lib/lutaml/uml_repository/static_site.rb', line 86

def configuration(config_path = nil)
  Configuration.load(config_path)
end

.generate(repository, options = {}) ⇒ String

Generate a static site from a repository

(:single_file or :multi_file)

Parameters:

  • repository (UmlRepository)

    The repository to generate from

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

    Generation options

Options Hash (options):

  • :config (Configuration)

    Configuration instance

  • :mode (Symbol)

    Output mode

  • :output (String)

    Output path

Returns:

  • (String)

    Path to generated output



49
50
51
52
# File 'lib/lutaml/uml_repository/static_site.rb', line 49

def generate(repository, options = {})
  generator = Generator.new(repository, options)
  generator.generate
end

.transform_data(repository, options = {}) ⇒ Hash

Transform repository data to JSON

Parameters:

  • repository (UmlRepository)

    The repository to transform

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

    Transformation options

Returns:

  • (Hash)

    JSON data structure



59
60
61
62
63
64
# File 'lib/lutaml/uml_repository/static_site.rb', line 59

def transform_data(repository, options = {})
  config = options[:config] || Configuration.load
  transformer_opts = config.transformation_options.merge(options)
  transformer = DataTransformer.new(repository, transformer_opts)
  transformer.transform
end