class Dry::Effects::Stack
Public Instance Methods
call(effect) { || ... }
click to toggle source
# File lib/dry/effects/stack.rb, line 16 def call(effect) if effect.is_a?(Effect) && (provider = provider(effect)) if effect.keywords.empty? provider.public_send(effect.name, *effect.payload) else provider.public_send(effect.name, *effect.payload, **effect.keywords) end else yield end rescue ::Exception => e # rubocop:disable Lint/RescueException Instructions::Raise.new(e) end
dup()
click to toggle source
# File lib/dry/effects/stack.rb, line 53 def dup Stack.new(map(&:dup)) end
each(&block)
click to toggle source
# File lib/dry/effects/stack.rb, line 41 def each(&block) providers.each(&block) end
empty?()
click to toggle source
# File lib/dry/effects/stack.rb, line 49 def empty? providers.empty? end
provider(effect)
click to toggle source
# File lib/dry/effects/stack.rb, line 37 def provider(effect) find { |p| p.provide?(effect) } end
push(provider) { || ... }
click to toggle source
# File lib/dry/effects/stack.rb, line 30 def push(provider) providers.unshift(provider) yield ensure providers.shift end
size()
click to toggle source
# File lib/dry/effects/stack.rb, line 45 def size providers.size end
to_s()
click to toggle source
# File lib/dry/effects/stack.rb, line 57 def to_s if empty? "#<Dry::Effects::Stack>" else stack = map(&:represent).reverse.join("->") "#<Dry::Effects::Stack #{stack}>" end end
Also aliased as: inspect