Sha256: b88c97be2f5d801b7e73ea8f335c4b282656bad51f1163ac78c5a415dd7fb9a4
Contents?: true
Size: 1.59 KB
Versions: 11
Compression:
Stored size: 1.59 KB
Contents
# frozen_string_literal: true require 'dry/monads/result' module Dry module Validation # Hints extension # # @example # Dry::Validation.load_extensions(:hints) # # contract = Dry::Validation::Contract.build do # schema do # required(:name).filled(:string, min_size?: 2..4) # end # end # # contract.call(name: "fo").hints # # {:name=>["size must be within 2 - 4"]} # # contract.call(name: "").messages # # {:name=>["must be filled", "size must be within 2 - 4"]} # # @api public module Hints # Hints extensions for Result # # @api public module ResultExtensions # Return error messages excluding hints # # @macro errors-options # @return [MessageSet] # # @api public def errors(new_options = EMPTY_HASH) opts = new_options.merge(hints: false) @errors.with(schema_errors(opts), opts) end # Return errors and hints # # @macro errors-options # # @return [MessageSet] # # @api public def messages(new_options = EMPTY_HASH) errors.with(hints.to_a, options.merge(**new_options)) end # Return hint messages # # @macro errors-options # # @return [MessageSet] # # @api public def hints(new_options = EMPTY_HASH) schema_result.hints(new_options) end end Dry::Schema.load_extensions(:hints) Result.prepend(ResultExtensions) end end end
Version data entries
11 entries across 11 versions & 1 rubygems