Module: Lutaml::UmlRepository::StaticSite

Defined in:
lib/lutaml/uml_repository/static_site.rb,
lib/lutaml/uml_repository/static_site/generator.rb,
lib/lutaml/uml_repository/static_site/id_generator.rb,
lib/lutaml/uml_repository/static_site/configuration.rb,
lib/lutaml/uml_repository/static_site/data_transformer.rb,
lib/lutaml/uml_repository/static_site/search_index_builder.rb

Overview

Static Site generation for UML model browsing.

Provides a complete SPA generator using:

  • Liquid templates

  • Alpine.js for reactivity

  • lunr.js for client-side search

  • Modern CSS (Grid/Flexbox)

  • External YAML configuration

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

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



67
68
69
70
71
72
73
74
75
76
# File 'lib/lutaml/uml_repository/static_site.rb', line 67

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:



82
83
84
# File 'lib/lutaml/uml_repository/static_site.rb', line 82

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



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

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



55
56
57
58
59
60
# File 'lib/lutaml/uml_repository/static_site.rb', line 55

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