Class: ActionMCP::RegistryBase

Inherits:
Object
  • Object
show all
Defined in:
lib/action_mcp/registry_base.rb

Overview

Base class for registries.

Defined Under Namespace

Classes: NotFound, RegistryScope

Class Method Summary collapse

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.

Parameters:

  • name (String)

    The name of the item to find.

Returns:

  • (Class)

    The class of the item.

Raises:

  • (NotFound)

    if the item is not found.



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

.itemsHash

Returns all registered items.

Returns:

  • (Hash)

    A hash of registered items.



13
14
15
# File 'lib/action_mcp/registry_base.rb', line 13

def items
  @items ||= {}
end

.non_abstractRegistryScope

Chainable scope: returns only non-abstract items.

Returns:



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

Parameters:

  • klass (Class)

    The class to re-register

  • old_name (String)

    The previous registered name



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

Parameters:

  • klass (Class)

    The class to register



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

.sizeInteger

Return the number of registered items, ignoring abstract ones.

Returns:

  • (Integer)

    The number of registered items.



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

Parameters:

  • klass (Class)

    The class to unregister



53
54
55
# File 'lib/action_mcp/registry_base.rb', line 53

def unregister(klass)
  items.delete(klass.capability_name)
end