Class: OpenStudio::Workflow::Registry
- Inherits:
-
Object
- Object
- OpenStudio::Workflow::Registry
- Defined in:
- lib/openstudio/workflow/registry.rb
Instance Method Summary collapse
- #__internal_state ⇒ Object
-
#empty? ⇒ Boolean
Checks if this registry has any items.
-
#eval(key) ⇒ Object
Re-evaluate the proc of a key and update the cache.
-
#get(key) ⇒ Object
(also: #[])
Get the cached value of the given key.
-
#initialize ⇒ Registry
constructor
A new instance of Registry.
-
#key?(key) ⇒ Boolean
(also: #has_key?)
Checks if the given key is registered with the registry.
-
#keys ⇒ Array
Returns an array populated with the keys of this object.
-
#length ⇒ Fixnum
(also: #size)
Return the number of elements in this registry.
-
#merge(other) ⇒ Registry
Merge one registry with another and return a completely new registry.
-
#merge!(other) ⇒ Void
Like #merge but updates self.
-
#register(key, &block) ⇒ Object
Register a key and cache it’s value.
-
#to_hash ⇒ Hash
Converts the registry to a hash.
Constructor Details
#initialize ⇒ Registry
Returns a new instance of Registry.
52 53 54 55 |
# File 'lib/openstudio/workflow/registry.rb', line 52 def initialize @items = {} @results_cache = {} end |
Instance Method Details
#__internal_state ⇒ Object
169 170 171 172 173 174 |
# File 'lib/openstudio/workflow/registry.rb', line 169 def __internal_state { items: @items, results_cache: @results_cache } end |
#empty? ⇒ Boolean
Checks if this registry has any items
129 130 131 |
# File 'lib/openstudio/workflow/registry.rb', line 129 def empty? @items.keys.empty? end |
#eval(key) ⇒ Object
Re-evaluate the proc of a key and update the cache
88 89 90 91 92 93 94 95 96 97 |
# File 'lib/openstudio/workflow/registry.rb', line 88 def eval(key) return nil unless @items.key?(key) begin @items[key].call rescue StandardError return nil end @results_cache[key] = @items[key].call end |
#get(key) ⇒ Object Also known as: []
Get the cached value of the given key
75 76 77 78 79 |
# File 'lib/openstudio/workflow/registry.rb', line 75 def get(key) return nil unless @items.key?(key) @results_cache[key] end |
#key?(key) ⇒ Boolean Also known as: has_key?
Checks if the given key is registered with the registry
103 104 105 |
# File 'lib/openstudio/workflow/registry.rb', line 103 def key?(key) @items.key?(key) end |
#keys ⇒ Array
Returns an array populated with the keys of this object
112 113 114 |
# File 'lib/openstudio/workflow/registry.rb', line 112 def keys @items.keys end |
#length ⇒ Fixnum Also known as: size
Return the number of elements in this registry
120 121 122 |
# File 'lib/openstudio/workflow/registry.rb', line 120 def length @items.keys.length end |
#merge(other) ⇒ Registry
Merge one registry with another and return a completely new registry. Note that the result cache is completely
busted, so any gets on the new registry will result in a cache miss
139 140 141 142 143 144 |
# File 'lib/openstudio/workflow/registry.rb', line 139 def merge(other) self.class.new.tap do |result| result.merge!(self) result.merge!(other) end end |
#merge!(other) ⇒ Void
Like #merge but updates self
151 152 153 154 |
# File 'lib/openstudio/workflow/registry.rb', line 151 def merge!(other) @items.merge!(other.__internal_state[:items]) self end |
#register(key, &block) ⇒ Object
Register a key and cache it’s value. Note that if a key with the given name already exists it is overwritten
63 64 65 66 67 68 |
# File 'lib/openstudio/workflow/registry.rb', line 63 def register(key, &block) raise ArgumentError, 'block required' unless block_given? @items[key] = block @results_cache[key] = @items[key].call end |
#to_hash ⇒ Hash
Converts the registry to a hash
160 161 162 163 164 165 166 167 |
# File 'lib/openstudio/workflow/registry.rb', line 160 def to_hash result = {} @results_cache.each_pair do |key, value| result[key] = value end result end |