Sha256: c5273a53d89194fa1faa38ecc9a0eeb66380dd72b9743e574e10be032b796f30
Contents?: true
Size: 1.39 KB
Versions: 1
Compression:
Stored size: 1.39 KB
Contents
gem 'dry-validation', '~> 1.5' require "dry-validation" require "reform/validation" require "reform/form/dry/input_hash" ::Dry::Validation.load_extensions(:hints) module Reform::Form::Dry class Contract < Dry::Validation::Contract end def self.included(includer) includer.send :include, Validations includer.extend Validations::ClassMethods end module Validations module ClassMethods def validation_group_class Group end end def self.included(includer) includer.extend(ClassMethods) end class Group include InputHash def initialize(**options) @validator = options.fetch(:contract, Contract) @schema_inject_params = options.fetch(:with, {}) end attr_reader :validator, :schema_inject_params, :block def instance_exec(&block) @block = block end def call(form) # when passing options[:schema] the class instance is already created so we just need to call # "call" return validator.call(input_hash(form)) unless validator.is_a?(Class) && @validator <= ::Dry::Validation::Contract dynamic_options = { form: form } inject_options = schema_inject_params.merge(dynamic_options) contract.new(inject_options).call(input_hash(form)) end def contract @contract ||= Class.new(validator, &block) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
reform-2.5.0 | lib/reform/form/dry.rb |