module Rebidux::Util

Public Class Methods

compose() click to toggle source
# File lib/rubidux/util.rb, line 3
def compose
  -> *funcs {
    if funcs.size == 1
      funcs[0]
    else
      last = funcs[funcs.size-1]
      rest = funcs[0..funcs.size-2].reverse
      -> (*args) { rest.reduce(last.(*args)) { |composed, f| f.(composed) } }
    end
  }
end

Private Instance Methods

compose() click to toggle source
# File lib/rubidux/util.rb, line 3
def compose
  -> *funcs {
    if funcs.size == 1
      funcs[0]
    else
      last = funcs[funcs.size-1]
      rest = funcs[0..funcs.size-2].reverse
      -> (*args) { rest.reduce(last.(*args)) { |composed, f| f.(composed) } }
    end
  }
end