Module: Dry::System::Plugins::Decorate

Defined in:
lib/dry/system/plugins/decorate.rb

Instance Method Summary collapse

Instance Method Details

#decorate(key, decorator:) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/dry/system/plugins/decorate.rb', line 7

def decorate(key, decorator:)
  original = _container.delete(key.to_s)

  if original.is_a?(Dry::Container::Item) && original.options[:call] && decorator.is_a?(Class)
    register(key) do
      decorator.new(original.call)
    end
  else
    decorated = decorator.is_a?(Class) ? decorator.new(original) : decorator
    register(key, decorated)
  end
end