class LightService::Organizer::ReduceCase

Public Class Methods

run(organizer, **args) click to toggle source
# File lib/light-service/organizer/reduce_case.rb, line 32
def self.run(organizer, **args)
  arguments = Arguments.new(**args)

  lambda do |ctx|
    return ctx if ctx.stop_processing?

    matched_case = arguments.when.keys.find { |k| k.eql?(ctx[arguments.value]) }
    steps = arguments.when[matched_case] || arguments.else

    ctx = scoped_reduce(organizer, ctx, steps)

    ctx
  end
end