Class: Crabfarm::Factories::Decorable::DecoratorChain
- Inherits:
-
Object
- Object
- Crabfarm::Factories::Decorable::DecoratorChain
- Defined in:
- lib/crabfarm/factories/decorable.rb
Instance Attribute Summary collapse
-
#base ⇒ Object
readonly
Returns the value of attribute base.
-
#decorator ⇒ Object
readonly
Returns the value of attribute decorator.
Instance Method Summary collapse
- #decorate(_obj) ⇒ Object
-
#initialize(_base, _decorator) ⇒ DecoratorChain
constructor
A new instance of DecoratorChain.
- #prepare(_args) ⇒ Object
Constructor Details
#initialize(_base, _decorator) ⇒ DecoratorChain
Returns a new instance of DecoratorChain.
9 10 11 12 |
# File 'lib/crabfarm/factories/decorable.rb', line 9 def initialize(_base, _decorator) @base = _base # al @decorator = _decorator end |
Instance Attribute Details
#base ⇒ Object (readonly)
Returns the value of attribute base.
7 8 9 |
# File 'lib/crabfarm/factories/decorable.rb', line 7 def base @base end |
#decorator ⇒ Object (readonly)
Returns the value of attribute decorator.
7 8 9 |
# File 'lib/crabfarm/factories/decorable.rb', line 7 def decorator @decorator end |
Instance Method Details
#decorate(_obj) ⇒ Object
25 26 27 28 29 30 31 32 33 |
# File 'lib/crabfarm/factories/decorable.rb', line 25 def decorate(_obj) if @decorator.respond_to? :decorate new_obj = @decorator.decorate _obj _obj = new_obj if new_obj end return _obj if @base.nil? @base.decorate _obj end |
#prepare(_args) ⇒ Object
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/crabfarm/factories/decorable.rb', line 14 def prepare(_args) obj = if @decorator.respond_to? :prepare @decorator.prepare(*_args) else nil end return obj if @base.nil? base_obj = @base.prepare _args raise ConfigurationError.new 'Decorator race condition' if obj and base_obj obj || base_obj end |