| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
=====================
Regexes are not enough sometimes. We should go all the way and fully parse the email and knock on the server's door to see if they really have a mailbox.
require 'pre' validator = Pre::Validator.new validator.valid? "me@apple.com"
Pre by default has built in validators for RFC2822 and DNS MX record verification. Validators can be passed through the :validators option.
require 'pre' # validate with no domain validation validator = Pre::Validator.new :validators => :format validator.valid? "foo@nonexistent201233.com" # => true
Pre can take blocks for custom validators
require 'pre' no_gmail = lambda do |address| address !~ /gmail.com$/ end validator = Pre::Validator.new :validators => [:format, no_gmail] validator.valid? "foo@gmail.com" # => false
Pre can take any object that implements the valid? method
require 'pre' class ComplexValidator def valid? address return true unless address =~ /gmail.com$/ # do not allow user+label@gmail.com address !~ /\+.+@/ end end validator = Pre::Validator.new :validators => [:domain, ComplexValidator.new] validator.valid? "john+spam@gmail.com" # => false
Pre can also take alternate configuration for a single address
require 'pre'
validator = Pre::Validator.new :validators => :format
validator.valid? "john@example.co.uk", :validators => lambda { |address|
address =~ /example.co.nz$/
} # => false
Certain strategies may be more "intense" than others. MX Record lookup and other expensive operations can benefit from providing Pre with a cache store. A cache store must respond to :write(key, val) and :read(key) methods. The cache abstraction layer provided by Rails' ActiveSupport::Cache::Store fits this interface.
require 'pre'
memcache = ActiveSupport::Cache::MemCacheStore.new("localhost", "server-downstairs.localnetwork:8229")
validator = Pre::Validator.new :cache_store => memcache
validator.valid? "foo@gmail.com" # => true
The RFC treetop grammars are pulled from the fantastic mail gem.
| Back | FazBrowse Home | New Git URL |