Sha256: 64a4777dbdc8cdf01262853f047c1e22f693e324150568636a6abe58359461be

Contents?: true

Size: 681 Bytes

Versions: 1

Compression:

Stored size: 681 Bytes

Contents

# frozen_string_literal: true

module ROM
  class Processor
    # @api private
    module Composer
      # @api private
      class Factory
        attr_reader :fns, :default

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

        # @api private
        def <<(other)
          fns.concat(Array(other).compact)
          self
        end

        # @api private
        def to_fn
          fns.reduce(:+) || default
        end
      end

      # @api private
      def compose(default = nil)
        factory = Factory.new(default)
        yield(factory)
        factory.to_fn
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rom-6.0.0.alpha1 lib/rom/processor/composer.rb