Sha256: f431a31d1ecb52c63215f00c6b3e4654dc9d1d4edb68fe7cfc1cae95f48ab7e5
Contents?: true
Size: 1.65 KB
Versions: 3
Compression:
Stored size: 1.65 KB
Contents
# frozen_string_literal: true %w[base presence_of format_of type_of length_of set_base inclusion_of exclusion_of].each do |validation| require "simple_validate/validates_#{validation}" end require "simple_validate/errors" require "simple_validate/version" require "simple_validate/utils" module SimpleValidate def self.included(klass) klass.extend(ClassMethods) klass.include(InstanceMethods) end module InstanceMethods def valid? self.class.validate(self) end def invalid? !valid? end def errors @errors ||= Errors.new end end module ClassMethods def method_missing(method, *args, &block) if respond_to?(method) add_validations(args, const_get(Utils.camelize(method))) else super end end def respond_to_missing?(method, include_private = false) method.to_s =~ /(validates_ (format| presence| type| inclusion| exclusion| length)_of) /x || super end def add_validations(args, klass) options = Utils.extract_options! args args.each do |attr| validations << klass.new(attr, options) end end def validations @validations ||= [] end def validate(instance) instance.errors.clear! validations.each do |validation| if validation.condition.call && !validation.valid?(instance) instance.errors.add(validation.attribute, validation.message) end end instance.errors.empty? end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
simple_validate-2.1.2 | lib/simple_validate.rb |
simple_validate-2.0.2 | lib/simple_validate.rb |
simple_validate-2.0.1 | lib/simple_validate.rb |