Sha256: f650e7e6b1f8e1c23dca8e15bc05f9a4e35c4b6bdc10f101c4d4c4004d7fbc98

Contents?: true

Size: 904 Bytes

Versions: 3

Compression:

Stored size: 904 Bytes

Contents

module Validatious
  module Validators
    
    # == Active Model Email Validator
    class EmailValidator < ActiveModel::EachValidator
      SPECIALCHARS = Regexp.escape('!#$%&\'*-/=?+-^_`{|}~')
      PARTUNQUOTED = '(([[:alnum:]' + SPECIALCHARS + ']+[\.\+]+))*[[:alnum:]' + SPECIALCHARS + '+]+'
      PARTQUOTED = '\"(([[:alnum:]' + SPECIALCHARS + '\.\+]*|(\\\\[\u0001-\uFFFF]))*)\"'
      REGEX = Regexp.new('^((' + PARTUNQUOTED + ')|(' + PARTQUOTED + ')+)@(((\w+\-+)|(\w+\.))*\w{1,63}\.[a-z]{2,6}$)', Regexp::EXTENDED | Regexp::IGNORECASE)
            
      def validate_each(record, attribute, value)
        record.errors.add(attribute, :invalid_email, options) if value.to_s !~ REGEX
      end
    end
  end
end

# Compatibility with ActiveModel validates method which matches option keys to their validator class
ActiveModel::Validations::EmailValidator = Validatious::Validators::EmailValidator

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
validatious-0.4.0 lib/validatious/validators/email_validator.rb
validatious-0.3.0 lib/validatious/validators/email_validator.rb
validatious-0.2.0 lib/validatious/validators/email_validator.rb