Class: Super::Plugin::Registry
- Inherits:
-
Object
- Object
- Super::Plugin::Registry
- Defined in:
- lib/super/plugin.rb
Class Method Summary collapse
Instance Method Summary collapse
- #classes_ordered ⇒ Object
-
#initialize ⇒ Registry
constructor
A new instance of Registry.
- #insert_after(*after, include: nil, prepend: nil) ⇒ Object
- #insert_before(*before, include: nil, prepend: nil) ⇒ Object
- #ordered ⇒ Object
- #use(include: nil, prepend: nil) ⇒ Object
Constructor Details
#initialize ⇒ Registry
Returns a new instance of Registry.
12 13 14 15 |
# File 'lib/super/plugin.rb', line 12 def initialize @registry = {} @ordering = Hash.new { |hash, key| hash[key] = [] } end |
Class Method Details
Instance Method Details
#classes_ordered ⇒ Object
29 30 31 32 33 34 |
# File 'lib/super/plugin.rb', line 29 def classes_ordered each_node = ->(&b) { @ordering.each_key(&b) } each_child = ->(cb, &b) { @ordering[cb].each(&b) } TSort.tsort(each_node, each_child) end |
#insert_after(*after, include: nil, prepend: nil) ⇒ Object
25 26 27 |
# File 'lib/super/plugin.rb', line 25 def insert_after(*after, include: nil, prepend: nil) register(include: include, prepend: prepend, before: [], after: after) end |
#insert_before(*before, include: nil, prepend: nil) ⇒ Object
21 22 23 |
# File 'lib/super/plugin.rb', line 21 def insert_before(*before, include: nil, prepend: nil) register(include: include, prepend: prepend, before: before, after: []) end |
#ordered ⇒ Object
36 37 38 39 40 |
# File 'lib/super/plugin.rb', line 36 def ordered classes_ordered.each do |class_name| yield class_name, @registry[class_name] end end |
#use(include: nil, prepend: nil) ⇒ Object
17 18 19 |
# File 'lib/super/plugin.rb', line 17 def use(include: nil, prepend: nil) register(include: include, prepend: prepend, before: [], after: []) end |