Module: Coradoc::Reference::Edge::Kind
- Defined in:
- lib/coradoc/reference/edge/kind.rb
Overview
Registry mapping kind symbol → Entry(name, options_class).
Built-in kinds are registered lazily on first access. External
gems add kinds via Edge.register_kind (OCP).
register always forces builtin registration first, so an
external registration made before first use is never clobbered
by the lazy builtin pass.
Class Method Summary collapse
- .ensure_builtins_registered! ⇒ Object
- .entry_for(name) ⇒ Object
- .names ⇒ Object
- .options_class_for(name) ⇒ Object
- .register(name, options_class: nil) ⇒ Object
- .reset! ⇒ Object
Class Method Details
.ensure_builtins_registered! ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/coradoc/reference/edge/kind.rb', line 50 def ensure_builtins_registered! MUTEX.synchronize do return if @builtins_registered @registering_builtins = true begin register(:navigation, options_class: Edge::NavigationOptions) register(:citation, options_class: Edge::CitationOptions) register(:link, options_class: Edge::LinkOptions) register(:include, options_class: Edge::IncludeOptions) register(:image_ref, options_class: Edge::ImageRefOptions) register(:footnote_ref, options_class: Edge::FootnoteRefOptions) @builtins_registered = true ensure @registering_builtins = false end end end |
.entry_for(name) ⇒ Object
40 41 42 43 |
# File 'lib/coradoc/reference/edge/kind.rb', line 40 def entry_for(name) ensure_builtins_registered! @entries[name.to_sym] end |
.names ⇒ Object
30 31 32 33 |
# File 'lib/coradoc/reference/edge/kind.rb', line 30 def names ensure_builtins_registered! @entries.keys end |
.options_class_for(name) ⇒ Object
35 36 37 38 |
# File 'lib/coradoc/reference/edge/kind.rb', line 35 def (name) ensure_builtins_registered! @entries[name.to_sym]&. end |
.register(name, options_class: nil) ⇒ Object
25 26 27 28 |
# File 'lib/coradoc/reference/edge/kind.rb', line 25 def register(name, options_class: nil) ensure_builtins_registered! unless @registering_builtins @entries[name.to_sym] = Entry.new(name.to_sym, ) end |
.reset! ⇒ Object
45 46 47 48 |
# File 'lib/coradoc/reference/edge/kind.rb', line 45 def reset! @entries.clear @builtins_registered = false end |