module Leftovers::ProcessorBuilders::EachDynamic
Public Class Methods
build(processors)
click to toggle source
# File lib/leftovers/processor_builders/each_dynamic.rb, line 14 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
compact(processors)
click to toggle source
# File lib/leftovers/processor_builders/each_dynamic.rb, line 41 def self.compact(processors) return processors if processors.length <= 1 processors = flatten(processors) processors.reject! do |p| p == ::Leftovers::DynamicProcessors::Null end processors end
each_or_self(value) { |value| ... }
click to toggle source
# File lib/leftovers/processor_builders/each_dynamic.rb, line 6 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
flatten(value)
click to toggle source
# File lib/leftovers/processor_builders/each_dynamic.rb, line 26 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