Class: Archsight::Annotations::EmailRecipient
- Inherits:
-
Object
- Object
- Archsight::Annotations::EmailRecipient
- Defined in:
- lib/archsight/annotations/email_recipient.rb
Overview
Custom type for email recipient validation Accepts: “Name <email@domain.com>” or “email@domain.com” Rejects: “Name” (no email)
Constant Summary collapse
- EMAIL_PATTERN =
RFC 5322 simplified email pattern
/\A[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}\z/- RECIPIENT_PATTERN =
Email recipient format: “Display Name <email@domain.com>”
/\A.+\s+<([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})>\z/
Class Method Summary collapse
Class Method Details
.extract_email(value) ⇒ Object
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/archsight/annotations/email_recipient.rb', line 25 def self.extract_email(value) return nil if value.nil? str = value.to_s.strip if (match = str.match(RECIPIENT_PATTERN)) match[1] elsif str.match?(EMAIL_PATTERN) str end end |
.valid?(value) ⇒ Boolean
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/archsight/annotations/email_recipient.rb', line 12 def self.valid?(value) return false if value.nil? || value.to_s.strip.empty? str = value.to_s.strip # Check if it's a full recipient format "Name <email>" return true if str.match?(RECIPIENT_PATTERN) # Check if it's just an email address return true if str.match?(EMAIL_PATTERN) false end |