Class: Lutaml::Hal::GlobalRegister

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/lutaml/hal/global_register.rb

Overview

Global register for model registers This class is a singleton that manages the registration and retrieval of model registers. It ensures that each model register is unique and provides a way to access them globally.

Examples:

global_register = GlobalRegister.instance
global_register.register(:example, ExampleModelRegister.new)
example_register = global_register.get(:example)

Instance Method Summary collapse

Constructor Details

#initializeGlobalRegister

Returns a new instance of GlobalRegister.



18
19
20
# File 'lib/lutaml/hal/global_register.rb', line 18

def initialize
  @model_registers = {}
end

Instance Method Details

#delete(name) ⇒ Object



37
38
39
40
41
# File 'lib/lutaml/hal/global_register.rb', line 37

def delete(name)
  return unless @model_registers[name]

  @model_registers.delete(name)
end

#get(name) ⇒ Object



31
32
33
34
35
# File 'lib/lutaml/hal/global_register.rb', line 31

def get(name)
  raise "Model register with name #{name} not found" unless @model_registers[name]

  @model_registers[name]
end

#register(name, model_register) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/lutaml/hal/global_register.rb', line 22

def register(name, model_register)
  if @model_registers[name] && @model_registers[name] != model_register
    raise "Model register with name #{name} replacing another one" \
          " (#{@model_registers[name].inspect} vs #{model_register.inspect})"
  end

  @model_registers[name] = model_register
end

#unregister(name) ⇒ Object



43
44
45
# File 'lib/lutaml/hal/global_register.rb', line 43

def unregister(name)
  delete(name)
end