Sha256: ddfef47bc9d3132ad50c21a4e8a8fae0b440ef1aedbe964a34c2b0523bc6a591

Contents?: true

Size: 996 Bytes

Versions: 1

Compression:

Stored size: 996 Bytes

Contents

# frozen_string_literal: true

module Leftovers
  module ProcessorBuilders
    module EachForDefinitionSet
      class << self
        def 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 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::EachForDefinitionSet.new(processors)
          end
        end

        private

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

          processors
        end
      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_for_definition_set.rb