Class: Metanorma::Mirror::HandlerRegistry
- Inherits:
-
Object
- Object
- Metanorma::Mirror::HandlerRegistry
- Defined in:
- lib/metanorma/mirror/handler_registry.rb
Defined Under Namespace
Classes: Entry
Instance Method Summary collapse
- #entry_for(model_element) ⇒ Object
- #handle(model_element, context:) ⇒ Object
-
#initialize ⇒ HandlerRegistry
constructor
A new instance of HandlerRegistry.
- #register(model_class, handler, method_name: :call, concat: false, extra_kwargs: {}) ⇒ Object
- #registered?(model_class) ⇒ Boolean
Constructor Details
#initialize ⇒ HandlerRegistry
Returns a new instance of HandlerRegistry.
8 9 10 |
# File 'lib/metanorma/mirror/handler_registry.rb', line 8 def initialize @handlers = {} end |
Instance Method Details
#entry_for(model_element) ⇒ Object
26 27 28 |
# File 'lib/metanorma/mirror/handler_registry.rb', line 26 def entry_for(model_element) @handlers[model_element.class] || ancestor_entry(model_element) end |
#handle(model_element, context:) ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/metanorma/mirror/handler_registry.rb', line 30 def handle(model_element, context:) entry = entry_for(model_element) return HandlerResult.none unless entry kwargs = { context: context }.merge(entry.extra_kwargs || {}) result = entry.callable.call(model_element, **kwargs) HandlerResult.new(result, concat: entry.concat) end |
#register(model_class, handler, method_name: :call, concat: false, extra_kwargs: {}) ⇒ Object
12 13 14 15 16 17 18 19 20 |
# File 'lib/metanorma/mirror/handler_registry.rb', line 12 def register(model_class, handler, method_name: :call, concat: false, extra_kwargs: {}) callable = resolve_callable(handler, method_name) @handlers[model_class] = Entry.new( callable: callable, concat: concat, extra_kwargs: extra_kwargs, ) end |
#registered?(model_class) ⇒ Boolean
22 23 24 |
# File 'lib/metanorma/mirror/handler_registry.rb', line 22 def registered?(model_class) @handlers.key?(model_class) end |