Class: ActionMCP::RegistryBase
- Inherits:
-
Object
- Object
- ActionMCP::RegistryBase
- Defined in:
- lib/action_mcp/registry_base.rb
Overview
Base class for registries.
Direct Known Subclasses
Defined Under Namespace
Classes: NotFound, RegistryScope
Class Method Summary collapse
-
.clear! ⇒ void
Clears the registry cache.
-
.find(name) ⇒ Class
Retrieve an item by name.
-
.items ⇒ Hash
Returns all registered items.
-
.non_abstract ⇒ RegistryScope
Chainable scope: returns only non-abstract items.
-
.re_register(klass, old_name) ⇒ void
Re-register an item under its current capability_name Removes old entry if name changed.
-
.register(klass) ⇒ void
Register an item explicitly.
-
.size ⇒ Integer
Return the number of registered items, ignoring abstract ones.
-
.unregister(klass) ⇒ void
Unregister an item.
Class Method Details
.clear! ⇒ void
This method returns an undefined value.
Clears the registry cache.
86 87 88 |
# File 'lib/action_mcp/registry_base.rb', line 86 def clear! @items = nil end |
.find(name) ⇒ Class
Retrieve an item by name.
62 63 64 65 66 67 |
# File 'lib/action_mcp/registry_base.rb', line 62 def find(name) item = items[name] raise NotFound, "Item '#{name}' not found." if item.nil? item end |
.items ⇒ Hash
Returns all registered items.
13 14 15 |
# File 'lib/action_mcp/registry_base.rb', line 13 def items @items ||= {} end |
.non_abstract ⇒ RegistryScope
Chainable scope: returns only non-abstract items.
79 80 81 |
# File 'lib/action_mcp/registry_base.rb', line 79 def non_abstract RegistryScope.new(items) end |
.re_register(klass, old_name) ⇒ void
This method returns an undefined value.
Re-register an item under its current capability_name Removes old entry if name changed
35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/action_mcp/registry_base.rb', line 35 def re_register(klass, old_name) return if klass.abstract? new_name = klass.capability_name # Remove old entry if it exists and points to this class if old_name && items[old_name] == klass items.delete(old_name) end items[new_name] = klass klass._registered_name = new_name if klass.respond_to?(:_registered_name=) end |
.register(klass) ⇒ void
This method returns an undefined value.
Register an item explicitly
21 22 23 24 25 26 27 |
# File 'lib/action_mcp/registry_base.rb', line 21 def register(klass) return if klass.abstract? name = klass.capability_name items[name] = klass klass._registered_name = name if klass.respond_to?(:_registered_name=) end |
.size ⇒ Integer
Return the number of registered items, ignoring abstract ones.
72 73 74 |
# File 'lib/action_mcp/registry_base.rb', line 72 def size items.size end |
.unregister(klass) ⇒ void
This method returns an undefined value.
Unregister an item
53 54 55 |
# File 'lib/action_mcp/registry_base.rb', line 53 def unregister(klass) items.delete(klass.capability_name) end |