Class: Micon::Metadata
- Inherits:
-
Object
- Object
- Micon::Metadata
- Defined in:
- lib/micon/metadata.rb
Overview
This class intentially made using “wired and not clear code”, to provide better performance.
Instance Attribute Summary collapse
-
#after ⇒ Object
Returns the value of attribute after.
-
#before ⇒ Object
Returns the value of attribute before.
-
#initializers ⇒ Object
Returns the value of attribute initializers.
-
#registry ⇒ Object
Returns the value of attribute registry.
Instance Method Summary collapse
-
#[](key) ⇒ Object
Registry.
- #call_after(key, object) ⇒ Object
- #call_after_scope(key, container) ⇒ Object
- #call_before(key) ⇒ Object
- #call_before_scope(key, container) ⇒ Object
- #clear ⇒ Object
- #clone ⇒ Object (also: #deep_clone)
- #delete(key) ⇒ Object
-
#include?(key) ⇒ Boolean
def []= key, value @registry = value end.
-
#initialize(registry) ⇒ Metadata
constructor
A new instance of Metadata.
- #register_after(key, &block) ⇒ Object
- #register_after_scope(key, &block) ⇒ Object
-
#register_before(key, &block) ⇒ Object
Callbacks.
-
#register_before_scope(key, &block) ⇒ Object
Scope callbacks.
- #with_scope_callbacks(key, container, &block) ⇒ Object
Constructor Details
#initialize(registry) ⇒ Metadata
Returns a new instance of Metadata.
7 8 9 10 |
# File 'lib/micon/metadata.rb', line 7 def initialize registry @registry = registry @before, @after, @before_scope, @after_scope, @initializers = {}, {}, {}, {}, {} end |
Instance Attribute Details
#after ⇒ Object
Returns the value of attribute after.
5 6 7 |
# File 'lib/micon/metadata.rb', line 5 def after @after end |
#before ⇒ Object
Returns the value of attribute before.
5 6 7 |
# File 'lib/micon/metadata.rb', line 5 def before @before end |
#initializers ⇒ Object
Returns the value of attribute initializers.
5 6 7 |
# File 'lib/micon/metadata.rb', line 5 def initializers @initializers end |
#registry ⇒ Object
Returns the value of attribute registry.
5 6 7 |
# File 'lib/micon/metadata.rb', line 5 def registry @registry end |
Instance Method Details
#[](key) ⇒ Object
Registry
44 45 46 |
# File 'lib/micon/metadata.rb', line 44 def [] key @registry[key] end |
#call_after(key, object) ⇒ Object
76 77 78 79 80 |
# File 'lib/micon/metadata.rb', line 76 def call_after key, object if callbacks = @after[key] callbacks.each{|c| c.call(object)} end end |
#call_after_scope(key, container) ⇒ Object
102 103 104 105 106 |
# File 'lib/micon/metadata.rb', line 102 def call_after_scope key, container if callbacks = @after_scope[key] callbacks.each{|c| c.call container} end end |
#call_before(key) ⇒ Object
70 71 72 73 74 |
# File 'lib/micon/metadata.rb', line 70 def call_before key if callbacks = @before[key] callbacks.each{|c| c.call} end end |
#call_before_scope(key, container) ⇒ Object
96 97 98 99 100 |
# File 'lib/micon/metadata.rb', line 96 def call_before_scope key, container if callbacks = @before_scope[key] callbacks.each{|c| c.call container} end end |
#clear ⇒ Object
12 13 14 15 16 17 18 19 |
# File 'lib/micon/metadata.rb', line 12 def clear @registry.clear @initializers.clear @before.clear @after.clear @before_scope.clear @after_scope.clear end |
#clone ⇒ Object Also known as: deep_clone
30 31 32 33 34 35 36 37 |
# File 'lib/micon/metadata.rb', line 30 def clone another = super %w(@registry @before @after @before_scope @after_scope @initializers).each do |name| value = instance_variable_get name another.instance_variable_set name, value.clone end another end |
#delete(key) ⇒ Object
21 22 23 24 25 26 27 28 |
# File 'lib/micon/metadata.rb', line 21 def delete key @registry.delete key @initializers.delete key @before.delete key @after.delete key @before_scope.delete key @after_scope.delete key end |
#include?(key) ⇒ Boolean
def []= key, value
@registry[key] = value
end
52 53 54 |
# File 'lib/micon/metadata.rb', line 52 def include? key @registry.include? key end |
#register_after(key, &block) ⇒ Object
65 66 67 68 |
# File 'lib/micon/metadata.rb', line 65 def register_after key, &block raise "you should provide block!" unless block (@after[key] ||= []) << block end |
#register_after_scope(key, &block) ⇒ Object
91 92 93 94 |
# File 'lib/micon/metadata.rb', line 91 def register_after_scope key, &block raise "you should provide block!" unless block (@after_scope[key] ||= []) << block end |
#register_before(key, &block) ⇒ Object
Callbacks
60 61 62 63 |
# File 'lib/micon/metadata.rb', line 60 def register_before key, &block raise "you should provide block!" unless block (@before[key] ||= []) << block end |
#register_before_scope(key, &block) ⇒ Object
Scope callbacks
86 87 88 89 |
# File 'lib/micon/metadata.rb', line 86 def register_before_scope key, &block raise "you should provide block!" unless block (@before_scope[key] ||= []) << block end |
#with_scope_callbacks(key, container, &block) ⇒ Object
108 109 110 111 112 113 |
# File 'lib/micon/metadata.rb', line 108 def with_scope_callbacks key, container, &block call_before_scope key, container result = block.call call_after_scope key, container result end |