Sha256: d84079b3c50e6d5b2ec8f4a8a6709702798babd2298410bcdf3215bd414e02a0

Contents?: true

Size: 884 Bytes

Versions: 1

Compression:

Stored size: 884 Bytes

Contents

# frozen_string_literal: true

module Leftovers
  module ProcessorBuilders
    module Each
      def self.each_or_self(value, &block)
        case value
        # :nocov:
        when nil then raise Leftovers::UnexpectedCase, "Unhandled value #{value.inspect}"
        # :nocov:
        when Array then build(value.map(&block))
        else build([yield(value)])
        end
      end

      def self.build(processors)
        processors = compact(processors)

        case processors.length
        # :nocov:
        when 0 then raise Leftovers::UnexpectedCase, "Unhandled value #{processors.inspect}"
        # :nocov:
        when 1 then processors.first
        else ::Leftovers::ValueProcessors::Each.new(processors)
        end
      end

      def self.compact(processors)
        processors.flatten!
        processors.compact!

        processors
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
leftovers-0.8.0 lib/leftovers/processor_builders/each.rb