Sha256: 18c3bdb37fe9d3fca4de40d18b4c77410132d7ce6aeb4941af02f3b7102cf854
Contents?: true
Size: 1.72 KB
Versions: 2
Compression:
Stored size: 1.72 KB
Contents
# frozen_string_literal: true class Serega module SeregaPlugins module Batch class CheckBatchOptLoader class << self def call(loader) return if loader.is_a?(Symbol) raise SeregaError, must_be_callable unless loader.respond_to?(:call) if loader.is_a?(Proc) check_block(loader) else check_callable(loader) end end private def check_block(block) return if valid_parameters?(block, accepted_count: 0..3) raise SeregaError, block_parameters_error end def check_callable(callable) return if valid_parameters?(callable.method(:call), accepted_count: 3..3) raise SeregaError, callable_parameters_error end def valid_parameters?(data, accepted_count:) params = data.parameters accepted_count.include?(params.count) && valid_parameters_types?(params) end def valid_parameters_types?(params) params.all? do |param| type = param[0] (type == :req) || (type == :opt) end end def block_parameters_error "Invalid :batch option :loader. When it is a Proc it can have maximum three regular parameters (keys, context, point)" end def callable_parameters_error "Invalid :batch option :loader. When it is a callable object it must have three regular parameters (keys, context, point)" end def must_be_callable "Invalid :batch option :loader. It must be a Symbol, a Proc or respond to :call" end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
serega-0.6.1 | lib/serega/plugins/batch/lib/validations/check_batch_opt_loader.rb |
serega-0.6.0 | lib/serega/plugins/batch/lib/validations/check_batch_opt_loader.rb |