Class: Uniword::ElementRegistry
- Inherits:
-
Object
- Object
- Uniword::ElementRegistry
- Defined in:
- lib/uniword/element_registry.rb
Overview
Registry for all element classes Responsibility: Maintain a registry of element classes and provide factory methods
This class follows the Registry pattern to enable:
-
Automatic registration of element classes via Element.inherited
-
Runtime element discovery
-
Factory method for creating elements by tag/type
Class Method Summary collapse
-
.all ⇒ Array<Class>
Get all registered element classes.
-
.clear ⇒ void
Clear the registry (primarily for testing).
-
.count ⇒ Integer
Get the number of registered elements.
-
.create(tag, attributes = {}) ⇒ Element?
Create an element instance by tag name.
-
.find(tag) ⇒ Class?
Find an element class by tag name.
-
.register(element_class) ⇒ void
Register an element class.
-
.registered?(tag) ⇒ Boolean
Check if a tag is registered.
-
.tags ⇒ Array<String>
Get all registered tag names.
Class Method Details
.all ⇒ Array<Class>
Get all registered element classes
49 50 51 |
# File 'lib/uniword/element_registry.rb', line 49 def all registry.values end |
.clear ⇒ void
This method returns an undefined value.
Clear the registry (primarily for testing)
71 72 73 |
# File 'lib/uniword/element_registry.rb', line 71 def clear registry.clear end |
.count ⇒ Integer
Get the number of registered elements
78 79 80 |
# File 'lib/uniword/element_registry.rb', line 78 def count registry.size end |
.create(tag, attributes = {}) ⇒ Element?
Create an element instance by tag name
31 32 33 34 35 36 |
# File 'lib/uniword/element_registry.rb', line 31 def create(tag, attributes = {}) element_class = find(tag) return nil unless element_class element_class.new(attributes) end |
.find(tag) ⇒ Class?
Find an element class by tag name
42 43 44 |
# File 'lib/uniword/element_registry.rb', line 42 def find(tag) registry[normalize_key(tag)] end |
.register(element_class) ⇒ void
This method returns an undefined value.
Register an element class
17 18 19 20 21 22 23 24 |
# File 'lib/uniword/element_registry.rb', line 17 def register(element_class) return if element_class.respond_to?(:abstract?) && element_class.abstract? key = element_class_key(element_class) return if key.nil? # Skip anonymous classes registry[key] = element_class end |
.registered?(tag) ⇒ Boolean
Check if a tag is registered
64 65 66 |
# File 'lib/uniword/element_registry.rb', line 64 def registered?(tag) registry.key?(normalize_key(tag)) end |
.tags ⇒ Array<String>
Get all registered tag names
56 57 58 |
# File 'lib/uniword/element_registry.rb', line 56 def registry.keys end |