Sha256: 0bf15695d62b6b00aa4a6ffd6a494892ac0310375b69c6dfb08f1ebf100cbece

Contents?: true

Size: 600 Bytes

Versions: 3

Compression:

Stored size: 600 Bytes

Contents

require 'dry/types/hash/schema'

module Dry
  module Types
    class Hash < Definition
      def schema(type_map, klass = Safe)
        member_types = type_map.each_with_object({}) { |(name, type), result|
          result[name] =
            case type
            when String, Class then Types[type]
            else type
            end
        }

        klass.new(primitive, options.merge(member_types: member_types))
      end

      def strict(type_map)
        schema(type_map, Strict)
      end

      def symbolized(type_map)
        schema(type_map, Symbolized)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dry-types-0.7.2 lib/dry/types/hash.rb
dry-types-0.7.1 lib/dry/types/hash.rb
dry-types-0.7.0 lib/dry/types/hash.rb