Sha256: c0a76164a491a1e6815cafc520580f1b2b1619329bcafe0704c93f8299beaeb8

Contents?: true

Size: 567 Bytes

Versions: 1

Compression:

Stored size: 567 Bytes

Contents

module Transproc
  module Helper
    def t(*args, &block)
      Transproc(*args, &block)
    end
  end

  module Composer
    include Helper

    class Factory
      attr_reader :fns, :default

      def initialize(default = nil)
        @fns = []
        @default = default
      end

      def <<(other)
        fns.concat(Array(other).compact)
        self
      end

      def to_fn
        fns.reduce(:+) || default
      end
    end

    def compose(default = nil)
      factory = Factory.new(default)
      yield(factory)
      factory.to_fn
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
transproc-0.1.3 lib/transproc/composer.rb