Class: Lutaml::UmlRepository::Presenters::PresenterFactory

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

Overview

Factory for creating appropriate presenter for UML elements.

Uses a registry pattern to map element classes to presenter classes. Automatically selects the correct presenter based on element type.

Examples:

Creating a presenter

presenter = PresenterFactory.create(class_obj, repository)
puts presenter.to_text

Class Method Summary collapse

Class Method Details

.create(element, repository = nil, context = nil) ⇒ ElementPresenter

Create appropriate presenter for the given element.

Parameters:

  • element (Object)

    UML element to present

  • repository (UmlRepository, nil) (defaults to: nil)

    Optional repository context

  • context (Hash, nil) (defaults to: nil)

    Optional context hash for presenter

Returns:

Raises:

  • (ArgumentError)

    if no presenter registered for element type



28
29
30
31
# File 'lib/lutaml/uml_repository/presenters/presenter_factory.rb', line 28

def create(element, repository = nil, context = nil)
  presenter_class = find_presenter_class(element)
  presenter_class.new(element, repository, context)
end

.presentersHash

Get all registered presenters.

Returns:

  • (Hash)

    Map of element classes to presenter classes



44
45
46
# File 'lib/lutaml/uml_repository/presenters/presenter_factory.rb', line 44

def presenters
  @presenters
end

.register(element_class, presenter_class) ⇒ Object

Register a presenter class for an element class.

Parameters:

  • element_class (Class)

    The UML element class

  • presenter_class (Class)

    The presenter class to use



37
38
39
# File 'lib/lutaml/uml_repository/presenters/presenter_factory.rb', line 37

def register(element_class, presenter_class)
  @presenters[element_class] = presenter_class
end