Class: Lutaml::Qea::Factory::TransformerRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/lutaml/qea/factory/transformer_registry.rb

Overview

Registry for EA to UML transformers Implements the Registry pattern for transformer lookup

Class Method Summary collapse

Class Method Details

.all_transformersHash

Get all registered transformers

Returns:

  • (Hash)

    All registered transformers



40
41
42
# File 'lib/lutaml/qea/factory/transformer_registry.rb', line 40

def all_transformers
  registry.dup
end

.clearObject

Clear all registrations (mainly for testing)



52
53
54
# File 'lib/lutaml/qea/factory/transformer_registry.rb', line 52

def clear
  @registry = {}
end

.register(ea_type, transformer_class) ⇒ Object

Register a transformer for an EA type

Parameters:

  • ea_type (Symbol, String)

    EA model type

  • transformer_class (Class)

    Transformer class



27
28
29
# File 'lib/lutaml/qea/factory/transformer_registry.rb', line 27

def register(ea_type, transformer_class)
  registry[ea_type.to_sym] = transformer_class
end

.register_defaultsObject

Register default transformers



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/lutaml/qea/factory/transformer_registry.rb', line 63

def register_defaults
  # Object types
  register(:class, ClassTransformer)
  register(:interface, ClassTransformer)
  register(:package, PackageTransformer)

  # Connector types
  register(:association, AssociationTransformer)
  register(:generalization, GeneralizationTransformer)

  # Other types
  register(:attribute, AttributeTransformer)
  register(:operation, OperationTransformer)
  register(:diagram, DiagramTransformer)
end

.registered?(ea_type) ⇒ Boolean

Check if a transformer is registered for a type

Parameters:

  • ea_type (Symbol, String)

    EA model type

Returns:

  • (Boolean)

    True if registered



47
48
49
# File 'lib/lutaml/qea/factory/transformer_registry.rb', line 47

def registered?(ea_type)
  registry.key?(ea_type.to_sym)
end

.registryHash

Get or initialize the registry

Returns:

  • (Hash)

    Registry hash



20
21
22
# File 'lib/lutaml/qea/factory/transformer_registry.rb', line 20

def registry
  @registry ||= {}
end

.reset_defaultsObject

Reset to default registrations



57
58
59
60
# File 'lib/lutaml/qea/factory/transformer_registry.rb', line 57

def reset_defaults
  clear
  register_defaults
end

.transformer_for(ea_type) ⇒ Class?

Get transformer for an EA type

Parameters:

  • ea_type (Symbol, String)

    EA model type

Returns:

  • (Class, nil)

    Transformer class or nil if not found



34
35
36
# File 'lib/lutaml/qea/factory/transformer_registry.rb', line 34

def transformer_for(ea_type)
  registry[ea_type.to_sym]
end