Sha256: 914e7150a9b846cc4e341189ffc1432bbfd75160a0c4be437d2b9d88aa0efa1f
Contents?: true
Size: 1.61 KB
Versions: 2
Compression:
Stored size: 1.61 KB
Contents
require 'dry/logic/operators' require 'dry/schema/macros/core' module Dry module Schema module Macros # Macro specialization used within the DSL # # @api public class DSL < Core include Dry::Logic::Operators undef :eql? undef :nil? # @api private option :chain, default: -> { true } # Specify predicates that should be applied to a value # # @api public def value(*predicates, **opts, &block) append_macro(Macros::Value) do |macro| macro.call(*predicates, **opts, &block) end end # Prepends `:filled?` predicate # # @api public def filled(*args, &block) append_macro(Macros::Filled) do |macro| macro.call(*args, &block) end end # Specify a nested schema # # @api public def schema(*args, &block) append_macro(Macros::Hash) do |macro| macro.call(*args, &block) end end # Specify predicates that should be applied to each element of an array # # @api public def each(*args, &block) append_macro(Macros::Each) do |macro| macro.value(*args, &block) end end private # @api private def append_macro(macro_type, &block) macro = macro_type.new(schema_dsl: schema_dsl, name: name) yield(macro) if chain trace << macro self else macro end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dry-schema-0.1.1 | lib/dry/schema/macros/dsl.rb |
dry-schema-0.1.0 | lib/dry/schema/macros/dsl.rb |