Sha256: 9cc1e408bf36ffd69cdcb2a6ba0f7b65ec200b92835bc00fc06f6054ce41602d
Contents?: true
Size: 827 Bytes
Versions: 2
Compression:
Stored size: 827 Bytes
Contents
require 'dry/core/cache' require 'dry/equalizer' module Dry module Schema # Coerces keys in a hash using provided coercer function # # @api private class KeyCoercer extend Dry::Core::Cache include ::Dry::Equalizer(:key_map, :coercer) TO_SYM = :to_sym.to_proc.freeze attr_reader :key_map, :coercer # @api private def self.new(*args, &coercer) fetch_or_store(*args, coercer) { super(*args, &coercer) } end # @api private def self.symbolized(*args) new(*args, &TO_SYM) end # @api private def initialize(key_map, &coercer) @key_map = key_map.coercible(&coercer) end # @api private def call(source) key_map.write(Hash(source)) end alias_method :[], :call end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dry-schema-0.2.0 | lib/dry/schema/key_coercer.rb |
dry-schema-0.1.1 | lib/dry/schema/key_coercer.rb |