class Bluepine::Registry
A generic registry
@example Create key/value pairs registry (Hash)
registry = Registry.new do |key, value| { name: key, age: value } end # Register object registry.register(:john, name: :john, age: 10) # Retrieve object registry.get(:john) # => { name: :john, age: 10 } # Create new object registry.create(:joe, 10) # => { name: joe, age: 10 }
Constants
- KeyError
Public Class Methods
new(objects = [], error: KeyError, &block)
click to toggle source
@param [Object] A collection of objects which has name property @param &block A {Proc} that'll create new object
# File lib/bluepine/registry.rb, line 24 def initialize(objects = [], error: KeyError, &block) assert_kind_of Proc, block @objects = normalize objects @factory = block @error = error end
Public Instance Methods
create(id, *args, &block)
click to toggle source
Creates new object by using a {Proc} from new
@return [Object] @example
registry.create(:user, "john")
# File lib/bluepine/registry.rb, line 50 def create(id, *args, &block) instance_exec(id, *args, block, &@factory) end
get(id)
click to toggle source
Retrieves registered Object by key
# File lib/bluepine/registry.rb, line 55 def get(id) raise @error, id unless key?(id) @objects[id.to_sym] end
key?(id)
click to toggle source
# File lib/bluepine/registry.rb, line 61 def key?(id) @objects.key? id end
keys()
click to toggle source
# File lib/bluepine/registry.rb, line 65 def keys @objects.keys end
register(id, object, override: false)
click to toggle source
Registers new object by id
@param id [String] Unique name @param object [Object] Object to register @param override [Boolean] Overrides existing key if exists
# File lib/bluepine/registry.rb, line 37 def register(id, object, override: false) if key?(id) && !override raise @error, id end @objects[id.to_sym] = object end
Private Instance Methods
normalize(objects = [])
click to toggle source
# File lib/bluepine/registry.rb, line 71 def normalize(objects = []) (objects || []).each_with_object({}) { |object, target| target[object.name] = object } end