class Crabfarm::Factories::Decorable::DecoratorChain

Attributes

base[R]
decorator[R]

Public Class Methods

new(_base, _decorator) click to toggle source
# File lib/crabfarm/factories/decorable.rb, line 9
def initialize(_base, _decorator)
  @base = _base # al
  @decorator = _decorator
end

Public Instance Methods

decorate(_obj) click to toggle source
# 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) click to toggle source
# 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