module Underware

Constants

DoNothing

Just a generic do-nothing lambda

Public Class Methods

exec(mws, *args, &block)
Alias for: exec_underware
exec_underware(mws, *args, &block) click to toggle source
# File lib/underware.rb, line 46
def exec_underware(mws, *args, &block)
  fold_underware(mws, &block).call(*args)
end
Also aliased as: exec
fold(mws, &block)
Alias for: fold_underware
fold_underware(mws, &block) click to toggle source
# File lib/underware.rb, line 36
def fold_underware(mws, &block)
  return fold_underware([*mws, block]) if block_given?

  mws.reverse_each.inject(DoNothing) do |folded, mw|
    Folded.new(mw, folded)
  end
end
Also aliased as: fold

Private Instance Methods

exec_underware(mws, *args, &block) click to toggle source
# File lib/underware.rb, line 46
def exec_underware(mws, *args, &block)
  fold_underware(mws, &block).call(*args)
end
Also aliased as: exec
fold_underware(mws, &block) click to toggle source
# File lib/underware.rb, line 36
def fold_underware(mws, &block)
  return fold_underware([*mws, block]) if block_given?

  mws.reverse_each.inject(DoNothing) do |folded, mw|
    Folded.new(mw, folded)
  end
end
Also aliased as: fold