class Soda::Middleware::Chain
Constants
- Entry
Attributes
entries[R]
Public Class Methods
new()
click to toggle source
# File lib/soda/middleware/chain.rb, line 12 def initialize @entries = [] end
Public Instance Methods
add(klass, *args)
click to toggle source
# File lib/soda/middleware/chain.rb, line 20 def add(klass, *args) remove(klass) entries << Entry.new(klass, args) end
each()
click to toggle source
# File lib/soda/middleware/chain.rb, line 16 def each entries.each(&:block) end
insert_at(index, klass, *args)
click to toggle source
# File lib/soda/middleware/chain.rb, line 29 def insert_at(index, klass, *args) entries.insert(index, Entry.new(klass, args)) end
remove(klass)
click to toggle source
# File lib/soda/middleware/chain.rb, line 25 def remove(klass) entries.delete_if { |entry| entry.klass == klass } end
use(*args) { || ... }
click to toggle source
# File lib/soda/middleware/chain.rb, line 33 def use(*args) traverse(entries.dup, args) do yield end end
Private Instance Methods
traverse(copy, args) { || ... }
click to toggle source
# File lib/soda/middleware/chain.rb, line 43 def traverse(copy, args) if copy.empty? yield else entry = copy.shift inst = entry.build inst.call(*args) do traverse(copy, args) { yield } end end end