Sha256: 00db7443440d1948ed3f9db7d5624936fa197b9cfaec0b136279e9e260c93c26
Contents?: true
Size: 1.27 KB
Versions: 3
Compression:
Stored size: 1.27 KB
Contents
# frozen_string_literal: true module Dry module Schema module Macros # Base macro for specifying rules applied to a value found under a key # # @api public class Key < DSL # @!attribute [r] filter_schema_dsl # @return [Schema::DSL] # @api private option :filter_schema_dsl, default: proc { schema_dsl&.filter_schema_dsl } # Specify predicates that should be applied before coercion # # @example check format before coercing to a date # required(:publish_date).filter(format?: /\d{4}-\d{2}-\d{2}).value(:date) # # @see Macros::Key#value # # @return [Macros::Key] # # @api public def filter(...) (filter_schema_dsl[name] || filter_schema_dsl.optional(name)).value(...) self end # Coerce macro to a rule # # @return [Dry::Logic::Rule] # # @api private def to_rule if trace.captures.empty? super else [super, trace.to_rule(name)].reduce(operation) end end # @api private def to_ast [:predicate, [:key?, [[:name, name], [:input, Undefined]]]] end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
dry-schema-1.13.3 | lib/dry/schema/macros/key.rb |
dry-schema-1.13.2 | lib/dry/schema/macros/key.rb |
dry-schema-1.13.1 | lib/dry/schema/macros/key.rb |