Sha256: 1ebf05a82f3c621036c67942cc3df50830d52fc9dba1c6e6ebd4cecc81833f40
Contents?: true
Size: 890 Bytes
Versions: 1
Compression:
Stored size: 890 Bytes
Contents
# frozen_string_literal: true module Dry module Schema module Macros # Macro used to specify a nested schema # # @api private class Hash < Schema # @api private def call(*args, &) if args.size >= 1 && args[0].respond_to?(:keys) hash_type = args[0] type_predicates = predicate_inferrer[hash_type] all_predicats = type_predicates + args.drop(1) super(*all_predicats) do hash_type.each do |key| if key.required? required(key.name).value(key.type) else optional(key.name).value(key.type) end instance_exec(&) if block_given? end end else trace << hash? super end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dry-schema-1.14.0 | lib/dry/schema/macros/hash.rb |