Class: Vedeu::Repositories::Repository
- Inherits:
-
Object
- Object
- Vedeu::Repositories::Repository
- Includes:
- Common, Registerable, Store
- Defined in:
- lib/vedeu/repositories/repository.rb
Overview
Provides common methods for accessing the various repositories Vedeu uses.
Direct Known Subclasses
Borders::Repository, Buffers::Repository, Cursors::Repository, Editor::Repository, Events::Repository, Geometry::Repository, Groups::Repository, Input::Keymaps, Interfaces::Repository, Menus::Repository
Instance Attribute Summary collapse
- #model ⇒ void readonly
- #storage ⇒ void readonly
Instance Method Summary collapse
-
#absent?(variable) ⇒ Boolean
included
from Common
Returns a boolean indicating whether a variable is nil or empty.
-
#all ⇒ Array<void>
Return all the registered models.
-
#by_name(name = Vedeu.focus) ⇒ void
Return the named model or a null object if not registered.
-
#current ⇒ String|NilClass
Return the model for the interface currently in focus.
-
#demodulize(klass) ⇒ String
included
from Common
Removes the module part from the expression in the string.
- #each(&block) ⇒ Enumerator included from Store
-
#empty? ⇒ Boolean
included
from Store
Return a boolean indicating whether the storage is empty.
-
#exists?(name) ⇒ Boolean
(also: #registered?)
included
from Store
Returns a boolean indicating whether the named model is registered.
-
#find(name) ⇒ Hash<String => Object>|NilClass
Find the model by name.
-
#find!(name) ⇒ Hash<String => Object>
Find the model attributes by name, raises an exception when the model cannot be found.
-
#find_or_create(name) ⇒ void
Find a model by name, registers the model by name when not found.
- #in_memory ⇒ Hash included from Store
-
#initialize(model = nil, storage = {}) ⇒ Vedeu::Repositories::Repository
constructor
Returns a new instance of Vedeu::Repositories::Repository.
- #inspect ⇒ String
- #log_store(model) ⇒ String private
-
#present?(variable) ⇒ Boolean
included
from Common
Returns a boolean indicating whether a variable has a useful value.
-
#registered ⇒ Array
included
from Store
Returns a collection of the names of all the registered entities.
-
#registered?(name) ⇒ Boolean
Returns a boolean indicating whether the named model is registered.
-
#remove(name) ⇒ Hash|FalseClass
(also: #delete)
Returns the storage with the named model removed, or false when the model does not exist.
-
#repository ⇒ Class
Returns the repository class.
-
#reset ⇒ Array|Hash|Set
(also: #reset!, #clear)
included
from Store
Remove all currently stored data.
-
#size ⇒ Fixnum
included
from Store
Return the number of entries stored.
-
#snake_case(name) ⇒ String
included
from Common
Converts a class name to a lowercase snake case string.
-
#store(model) ⇒ void
(also: #register, #add)
Stores the model instance by name in the repository of the model.
Constructor Details
#initialize(model = nil, storage = {}) ⇒ Vedeu::Repositories::Repository
Returns a new instance of Vedeu::Repositories::Repository.
32 33 34 35 |
# File 'lib/vedeu/repositories/repository.rb', line 32 def initialize(model = nil, storage = {}) @model = model @storage = storage end |
Instance Attribute Details
#model ⇒ void (readonly)
This method returns an undefined value.
21 22 23 |
# File 'lib/vedeu/repositories/repository.rb', line 21 def model @model end |
#storage ⇒ void (readonly)
This method returns an undefined value.
25 26 27 |
# File 'lib/vedeu/repositories/repository.rb', line 25 def storage @storage end |
Instance Method Details
#absent?(variable) ⇒ Boolean Originally defined in module Common
Returns a boolean indicating whether a variable is nil or empty.
#all ⇒ Array<void>
Return all the registered models.
47 48 49 50 51 |
# File 'lib/vedeu/repositories/repository.rb', line 47 def all return storage.values if storage.is_a?(Hash) registered end |
#by_name(name = Vedeu.focus) ⇒ void
This method returns an undefined value.
Return the named model or a null object if not registered.
65 66 67 68 69 70 71 |
# File 'lib/vedeu/repositories/repository.rb', line 65 def by_name(name = Vedeu.focus) name = present?(name) ? name : Vedeu.focus return find(name) if registered?(name) null_model.new(name: name) end |
#current ⇒ String|NilClass
Return the model for the interface currently in focus.
76 77 78 |
# File 'lib/vedeu/repositories/repository.rb', line 76 def current find_or_create(Vedeu.focus) if Vedeu.focus end |
#demodulize(klass) ⇒ String Originally defined in module Common
Removes the module part from the expression in the string.
#each(&block) ⇒ Enumerator Originally defined in module Store
#empty? ⇒ Boolean Originally defined in module Store
Return a boolean indicating whether the storage is empty.
#exists?(name) ⇒ Boolean Also known as: registered? Originally defined in module Store
Returns a boolean indicating whether the named model is registered.
#find(name) ⇒ Hash<String => Object>|NilClass
Find the model by name.
84 85 86 |
# File 'lib/vedeu/repositories/repository.rb', line 84 def find(name) storage[name] end |
#find!(name) ⇒ Hash<String => Object>
Find the model attributes by name, raises an exception when the model cannot be found.
95 96 97 98 |
# File 'lib/vedeu/repositories/repository.rb', line 95 def find!(name) find(name) || fail(Vedeu::Error::ModelNotFound, "Cannot find model by name: '#{name}'".freeze) end |
#find_or_create(name) ⇒ void
This method returns an undefined value.
Find a model by name, registers the model by name when not found.
105 106 107 108 109 110 111 112 113 |
# File 'lib/vedeu/repositories/repository.rb', line 105 def find_or_create(name) return find(name) if registered?(name) Vedeu.log(type: :store, message: "Model (#{model}) not found, " \ "registering: '#{name}'".freeze) model.new(name).store end |
#in_memory ⇒ Hash Originally defined in module Store
#inspect ⇒ String
116 117 118 |
# File 'lib/vedeu/repositories/repository.rb', line 116 def inspect "<#{self.class.name}>".freeze end |
#log_store(model) ⇒ String (private)
170 171 172 173 174 175 |
# File 'lib/vedeu/repositories/repository.rb', line 170 def log_store(model) type = registered?(model.name) ? :update : :create Vedeu.log(type: type, message: "#{model.class.name}: '#{model.name}'".freeze) end |
#present?(variable) ⇒ Boolean Originally defined in module Common
Returns a boolean indicating whether a variable has a useful value.
#registered ⇒ Array Originally defined in module Store
Returns a collection of the names of all the registered entities.
#registered?(name) ⇒ Boolean
Returns a boolean indicating whether the named model is registered.
125 126 127 128 129 130 |
# File 'lib/vedeu/repositories/repository.rb', line 125 def registered?(name) return false if absent?(name) return false if empty? storage.include?(name) end |
#remove(name) ⇒ Hash|FalseClass Also known as: delete
Returns the storage with the named model removed, or false when the model does not exist.
137 138 139 140 141 142 143 |
# File 'lib/vedeu/repositories/repository.rb', line 137 def remove(name) return false if empty? return false unless registered?(name) storage.delete(name) storage unless storage.is_a?(Set) end |
#repository ⇒ Class
Returns the repository class.
40 41 42 |
# File 'lib/vedeu/repositories/repository.rb', line 40 def repository self.class end |
#reset ⇒ Array|Hash|Set Also known as: reset!, clear Originally defined in module Store
Remove all currently stored data.
#size ⇒ Fixnum Originally defined in module Store
Return the number of entries stored.
#snake_case(name) ⇒ String Originally defined in module Common
Converts a class name to a lowercase snake case string.
#store(model) ⇒ void Also known as: register, add
This method returns an undefined value.
Stores the model instance by name in the repository of the model.
153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/vedeu/repositories/repository.rb', line 153 def store(model) unless present?(model.name) fail Vedeu::Error::MissingRequired, "Cannot store model '#{model.class}' " \ 'without a name attribute.'.freeze end log_store(model) storage[model.name] = model end |