Sha256: 7dc3be326040618a54038db8ccf536c7e625a3a5f5cfbf2b578aa758c76b315a

Contents?: true

Size: 992 Bytes

Versions: 6

Compression:

Stored size: 992 Bytes

Contents

# frozen_string_literal: true

class Serega
  module SeregaValidations
    #
    # Validations Utilities
    #
    module Utils
      #
      # Utility to check that callable object has no required keyword arguments
      #
      class CheckExtraKeywordArg
        # Checks hash keys are allowed
        #
        # @param callable [#call] Callable object
        # @param callable_description [Symbol] Callable object description
        #
        # @raise [Serega::SeregaError] error if callable accepts required keyword argument
        #
        # @return [void]
        def self.call(callable, callable_description)
          parameters = callable.is_a?(Proc) ? callable.parameters : callable.method(:call).parameters

          parameters.each do |parameter|
            next unless parameter[0] == :keyreq

            raise Serega::SeregaError, "Invalid #{callable_description}. It should not have any required keyword arguments"
          end
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
serega-0.21.0 lib/serega/validations/utils/check_extra_keyword_arg.rb
serega-0.20.1 lib/serega/validations/utils/check_extra_keyword_arg.rb
serega-0.20.0 lib/serega/validations/utils/check_extra_keyword_arg.rb
serega-0.19.0 lib/serega/validations/utils/check_extra_keyword_arg.rb
serega-0.18.0 lib/serega/validations/utils/check_extra_keyword_arg.rb
serega-0.17.0 lib/serega/validations/utils/check_extra_keyword_arg.rb