module Transproc::Composer

Helper extension handy for composing many functions in multiple steps

@example

include Transproc::Composer

fn = compose do |fns|
  fns << t(:map_array, t(:symbolize_keys))
  fns << t(:map_array, t(:nest, :address, [:city, :zipcode]))
end

fn.call [{ 'city' => 'NYC', 'zipcode' => '123' }]
# => [{ address: { city: 'NYC', zipcode: '123' }]

@api public

Public Instance Methods

compose(default = nil) { |factory| ... } click to toggle source

Gather and compose functions and fall-back to a default one if provided

@example

include Transproc::Composer

fn = compose(-> v { v }) do |fns|
  fns << t(:to_string) if something
end

fn[1] # => "1"

@see Composer

@api public

# File lib/transproc/composer.rb, line 63
def compose(default = nil)
  factory = Factory.new(default)
  yield(factory)
  factory.to_fn
end