Class: Cayuga::Object::Factory
- Inherits:
-
Object
- Object
- Cayuga::Object::Factory
- Includes:
- Tools::Loggable
- Defined in:
- lib/cayuga/object/factory.rb
Overview
Cayuga Object Factory
Instance Attribute Summary collapse
-
#configuration_name ⇒ Object
readonly
Returns the value of attribute configuration_name.
-
#logs_directory ⇒ Object
readonly
Returns the value of attribute logs_directory.
Instance Method Summary collapse
- #[](klass, name = nil) ⇒ Object
- #directory_constants ⇒ Object
- #register(instance, klass, name = nil) ⇒ Object
- #registered?(klass, name = nil) ⇒ Boolean
- #release(klass, name = nil) ⇒ Object
- #supported?(klass) ⇒ Boolean
- #type(klass) ⇒ Object
Methods included from Tools::Loggable
Instance Attribute Details
#configuration_name ⇒ Object (readonly)
Returns the value of attribute configuration_name.
15 16 17 |
# File 'lib/cayuga/object/factory.rb', line 15 def configuration_name @configuration_name end |
#logs_directory ⇒ Object (readonly)
Returns the value of attribute logs_directory.
15 16 17 |
# File 'lib/cayuga/object/factory.rb', line 15 def logs_directory @logs_directory end |
Instance Method Details
#[](klass, name = nil) ⇒ Object
52 53 54 55 56 57 58 59 |
# File 'lib/cayuga/object/factory.rb', line 52 def [](klass, name = nil) key = klass.symbolize value = lookup_registered_instances(key, name) if value.nil? value = create_instance(type(key), klass.classify, name) end value end |
#directory_constants ⇒ Object
79 80 81 |
# File 'lib/cayuga/object/factory.rb', line 79 def directory_constants @directories.freeze end |
#register(instance, klass, name = nil) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/cayuga/object/factory.rb', line 29 def register(instance, klass, name = nil) key = klass.symbolize unless lookup_registered_instances(key, name).nil? value = name.nil? ? klass.string : "#{klass.string}[#{name}]" raise "instance for #{value} already registered}" end type = type(key) case type when :singleton # , :factory instances[key] = instance when :named value = instances[key] if value.nil? value = {} instances[key] = value end value[name] = instance else raise "bad type '#{type}'" end instance end |
#registered?(klass, name = nil) ⇒ Boolean
25 26 27 |
# File 'lib/cayuga/object/factory.rb', line 25 def registered?(klass, name = nil) lookup_registered_instances(klass.symbolize, name) != nil end |
#release(klass, name = nil) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/cayuga/object/factory.rb', line 61 def release(klass, name = nil) key = klass.symbolize if registered?(key, name) type = type(key) case type when :singleton #, :factory instances.delete(key) when :named value = instances[key] if value value.delete(name) end else raise "bad type '#{type}'" end end end |
#supported?(klass) ⇒ Boolean
17 18 19 |
# File 'lib/cayuga/object/factory.rb', line 17 def supported?(klass) types.key?(klass.symbolize) end |
#type(klass) ⇒ Object
21 22 23 |
# File 'lib/cayuga/object/factory.rb', line 21 def type(klass) types[klass.symbolize] end |