class ApipieDSL::Validator::HashValidator
Public Class Methods
build(param_description, argument, options, block)
click to toggle source
# File lib/apipie_dsl/validator.rb, line 312 def self.build(param_description, argument, options, block) return if argument != Hash || !block.is_a?(Proc) || block.arity.positive? new(param_description, block, options[:param_group]) end
new(param_description, argument, param_group)
click to toggle source
Calls superclass method
ApipieDSL::Validator::BaseValidator::new
# File lib/apipie_dsl/validator.rb, line 305 def initialize(param_description, argument, param_group) super(param_description) @param_group = param_group instance_exec(&argument) prepare_hash_params end
Public Instance Methods
default_param_group_scope()
click to toggle source
# File lib/apipie_dsl/validator.rb, line 343 def default_param_group_scope @param_group && @param_group[:scope] end
description()
click to toggle source
# File lib/apipie_dsl/validator.rb, line 335 def description 'Must be a Hash' end
expected_type()
click to toggle source
# File lib/apipie_dsl/validator.rb, line 339 def expected_type 'hash' end
merge_with(other_validator)
click to toggle source
Calls superclass method
ApipieDSL::Validator::BaseValidator#merge_with
# File lib/apipie_dsl/validator.rb, line 347 def merge_with(other_validator) if other_validator.is_a?(HashValidator) @sub_params = ApipieDSL::ParameterDescription.unify(sub_params + other_validator.sub_params) prepare_hash_params else super end end
sub_params()
click to toggle source
# File lib/apipie_dsl/validator.rb, line 318 def sub_params @sub_params ||= dsl_data[:params].map do |args| options = args.find { |arg| arg.is_a?(Hash) } options[:parent] = param_description ApipieDSL::ParameterDescription.from_dsl_data(param_description.method_description, args) end end
validate(value)
click to toggle source
# File lib/apipie_dsl/validator.rb, line 326 def validate(value) return false unless value.is_a?(Hash) @hash_params&.each do |name, param| param.validate(value[name]) if ApipieDSL.configuration.validate_value? && value.key?(name) end true end
Private Instance Methods
prepare_hash_params()
click to toggle source
# File lib/apipie_dsl/validator.rb, line 358 def prepare_hash_params @hash_params = sub_params.each_with_object({}) do |param, hash| hash.update(param.name.to_sym => param) end end