Class: Zodra::TypeRegistry

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/zodra/type_registry.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeTypeRegistry

Returns a new instance of TypeRegistry.



11
12
13
# File 'lib/zodra/type_registry.rb', line 11

def initialize
  @store = {}
end

Class Method Details

.globalObject



7
8
9
# File 'lib/zodra/type_registry.rb', line 7

def self.global
  @global ||= new
end

Instance Method Details

#clear!Object



38
39
40
# File 'lib/zodra/type_registry.rb', line 38

def clear!
  @store.clear
end

#eachObject



34
35
36
# File 'lib/zodra/type_registry.rb', line 34

def each(&)
  @store.each_value(&)
end

#exists?(name) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/zodra/type_registry.rb', line 30

def exists?(name)
  @store.key?(name.to_sym)
end

#find(name) ⇒ Object



22
23
24
# File 'lib/zodra/type_registry.rb', line 22

def find(name)
  @store[name.to_sym]
end

#find!(name) ⇒ Object



26
27
28
# File 'lib/zodra/type_registry.rb', line 26

def find!(name)
  @store.fetch(name.to_sym) { raise KeyError, "Type :#{name} is not registered" }
end

#register(name, kind:) ⇒ Object

Raises:



15
16
17
18
19
20
# File 'lib/zodra/type_registry.rb', line 15

def register(name, kind:, **)
  name = name.to_sym
  raise DuplicateTypeError, "Type :#{name} is already registered" if @store.key?(name)

  @store[name] = Definition.new(name:, kind:, **)
end