Class: Micon::Metadata

Inherits:
Object show all
Defined in:
lib/micon/metadata.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(registry, sync) ⇒ Metadata

Returns a new instance of Metadata.



8
9
10
11
# File 'lib/micon/metadata.rb', line 8

def initialize registry, sync
  @registry, @sync = registry, sync
  @before, @after, @initializers = {}, {}, {}
end

Instance Attribute Details

#afterObject

Returns the value of attribute after.



6
7
8
# File 'lib/micon/metadata.rb', line 6

def after
  @after
end

#beforeObject

Returns the value of attribute before.



6
7
8
# File 'lib/micon/metadata.rb', line 6

def before
  @before
end

#initializersObject

Returns the value of attribute initializers.



6
7
8
# File 'lib/micon/metadata.rb', line 6

def initializers
  @initializers
end

#registryObject

Returns the value of attribute registry.



6
7
8
# File 'lib/micon/metadata.rb', line 6

def registry
  @registry
end

Instance Method Details

#[](key) ⇒ Object

Registry



35
36
37
# File 'lib/micon/metadata.rb', line 35

def [] key
  @sync.synchronize{@registry[key]}
end

#call_after(key, object) ⇒ Object



69
70
71
72
73
# File 'lib/micon/metadata.rb', line 69

def call_after key, object
  if callbacks = @after[key]
    callbacks.each{|c| c.call(object)}
  end
end

#call_after_scope(key) ⇒ Object



85
86
87
88
89
# File 'lib/micon/metadata.rb', line 85

def call_after_scope key
  if callbacks = @after[key]
    callbacks.each{|c| c.call}
  end
end

#call_before(key) ⇒ Object



63
64
65
66
67
# File 'lib/micon/metadata.rb', line 63

def call_before key
  if callbacks = @before[key]
    callbacks.each{|c| c.call} 
  end
end

#call_before_scope(key) ⇒ Object

Scope callbacks



79
80
81
82
83
# File 'lib/micon/metadata.rb', line 79

def call_before_scope key
  if callbacks = @before[key]
    callbacks.each{|c| c.call}
  end
end

#clearObject



13
14
15
16
17
18
19
20
# File 'lib/micon/metadata.rb', line 13

def clear
  @sync.synchronize do 
    @registry.clear
    @initializers.clear
    @before.clear
    @after.clear
  end
end

#delete(key) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/micon/metadata.rb', line 22

def delete key
  @sync.synchronize do
    @registry.delete key
    @initializers.delete key
    @before.delete key
    @after.delete key
  end
end

#include?(key) ⇒ Boolean

def []= key, value

@sync.synchronize{@registry[key] = value}

end

Returns:

  • (Boolean)


43
44
45
# File 'lib/micon/metadata.rb', line 43

def include? key
  @sync.synchronize{@registry.include? key}
end

#register_after(key, &block) ⇒ Object



57
58
59
60
61
# File 'lib/micon/metadata.rb', line 57

def register_after key, &block
  @sync.synchronize do
    (@after[key] ||= []) << block.must_not_be.nil
  end
end

#register_before(key, &block) ⇒ Object

Callbacks



51
52
53
54
55
# File 'lib/micon/metadata.rb', line 51

def register_before key, &block
  @sync.synchronize do
    (@before[key] ||= []) << block.must_not_be.nil
  end
end

#with_scope_callbacks(key, &block) ⇒ Object



91
92
93
94
95
96
# File 'lib/micon/metadata.rb', line 91

def with_scope_callbacks key, &block
  call_before_scope key
  result = block.call
  call_after_scope key
  result
end