Sha256: b442e6c2be61d6b392eb9d2eb1cec120c73937f294ee93e181c21cd7821eab82
Contents?: true
Size: 1.19 KB
Versions: 1
Compression:
Stored size: 1.19 KB
Contents
# frozen_string_literal: true module Leftovers module ProcessorBuilders module EachAction class << self def each_or_self(value, &block) case value when nil then nil 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::Each.new(processors) end end private def flatten(value) case value when ::Leftovers::ValueProcessors::Each value.processors.flat_map { |v| flatten(v) } when Array value.flat_map { |v| flatten(v) } else value end end def compact(processors) return processors if processors.length <= 1 processors = flatten(processors) 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_action.rb |