Sha256: 5a574d578d274d1391554992aaeab7c2d79b05644ecdddcc9831c32b25f790d2

Contents?: true

Size: 1.26 KB

Versions: 12

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true

module Leftovers
  module ProcessorBuilders
    module EachDynamic
      def self.each_or_self(value, &block)
        case value
        when nil then ::Leftovers::DynamicProcessors::Null
        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
        # :nocov:
        when 1 then processors.first
        else ::Leftovers::DynamicProcessors::Each.new(processors)
        end
      end

      def self.flatten(value) # rubocop:disable Metrics/MethodLength
        case value
        when ::Leftovers::DynamicProcessors::Each
          ret = value.processors.map { |v| flatten(v) }
          ret.flatten!(1)
          ret
        when Array
          ret = value.map { |v| flatten(v) }
          ret.flatten!(1)
          ret
        else
          value
        end
      end

      def self.compact(processors)
        return processors if processors.length <= 1

        processors = flatten(processors)

        processors.reject! do |p|
          p == ::Leftovers::DynamicProcessors::Null
        end

        processors
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
leftovers-0.7.0 lib/leftovers/processor_builders/each_dynamic.rb
leftovers-0.6.0 lib/leftovers/processor_builders/each_dynamic.rb
leftovers-0.5.5 lib/leftovers/processor_builders/each_dynamic.rb
leftovers-0.5.4 lib/leftovers/processor_builders/each_dynamic.rb
leftovers-0.5.3 lib/leftovers/processor_builders/each_dynamic.rb
leftovers-0.5.2 lib/leftovers/processor_builders/each_dynamic.rb
leftovers-0.5.1 lib/leftovers/processor_builders/each_dynamic.rb
leftovers-0.5.0 lib/leftovers/processor_builders/each_dynamic.rb
leftovers-0.4.3 lib/leftovers/processor_builders/each_dynamic.rb
leftovers-0.4.2 lib/leftovers/processor_builders/each_dynamic.rb
leftovers-0.4.1 lib/leftovers/processor_builders/each_dynamic.rb
leftovers-0.4.0 lib/leftovers/processor_builders/each_dynamic.rb