Class: MailAddress::Address
- Inherits:
-
Object
- Object
- MailAddress::Address
- Defined in:
- lib/mail_address/address.rb
Constant Summary collapse
- ATEXT =
'[\-\w\s!#$%&\'*+/=?^`{|}~]'
Instance Attribute Summary collapse
-
#address ⇒ Object
Returns the value of attribute address.
-
#original ⇒ Object
Returns the value of attribute original.
-
#phrase ⇒ Object
Returns the value of attribute phrase.
Instance Method Summary collapse
- #format(enquote = false) ⇒ Object
- #host ⇒ Object
-
#initialize(phrase, address, original) ⇒ Address
constructor
A new instance of Address.
- #name ⇒ Object
- #quoted_address ⇒ Object
- #user ⇒ Object
Constructor Details
#initialize(phrase, address, original) ⇒ Address
Returns a new instance of Address.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/mail_address/address.rb', line 7 def initialize(phrase, address, original) @address = address @phrase = phrase @original = original ### validate afterwords # parse failed or invalid address unless (@address && @original.include?(@address)) && Address._check_address_with_regex(@address) @address = nil end # invalid address @phrase = original if @address.nil? end |
Instance Attribute Details
#address ⇒ Object
Returns the value of attribute address.
5 6 7 |
# File 'lib/mail_address/address.rb', line 5 def address @address end |
#original ⇒ Object
Returns the value of attribute original.
5 6 7 |
# File 'lib/mail_address/address.rb', line 5 def original @original end |
#phrase ⇒ Object
Returns the value of attribute phrase.
5 6 7 |
# File 'lib/mail_address/address.rb', line 5 def phrase @phrase end |
Instance Method Details
#format(enquote = false) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/mail_address/address.rb', line 24 def format(enquote = false) addr = [] return @original.gsub(/[;,]/, '') if @address.nil? email_address = enquote ? quoted_address : @address if !@phrase.nil? && @phrase.length > 0 # if @phrase.match(/\A\(/) && @phrase.match(/\)\z/) # addr.push(email_address) if [email protected]? && @address.length > 0 # addr.push(@phrase) # else addr.push( @phrase.match(/^(?:#{ATEXT})+$/) ? @phrase : @phrase.match(/(?<!\\)"/) ? @phrase : %Q("#{@phrase}") ) addr.push "<#{email_address}>" if !@address.nil? && @address.length > 0 # end elsif !@address.nil? && @address.length > 0 addr.push(email_address) end addr.join(' ') end |
#host ⇒ Object
54 55 56 57 58 |
# File 'lib/mail_address/address.rb', line 54 def host addr = @address || ''; i = addr.rindex('@') i.nil? ? nil : addr[i + 1 .. -1] end |
#name ⇒ Object
48 49 50 51 52 |
# File 'lib/mail_address/address.rb', line 48 def name phrase = @phrase.dup name = Address._extract_name(phrase) name.length > 0 ? name : nil end |
#quoted_address ⇒ Object
66 67 68 69 70 71 72 73 74 |
# File 'lib/mail_address/address.rb', line 66 def quoted_address if @address local_part = self.user.gsub(/(\A"|"\z)/, '') if local_part.include?('..') || local_part.end_with?('.') return "\"#{local_part}\"@#{self.host}" end end @address end |
#user ⇒ Object
60 61 62 63 64 |
# File 'lib/mail_address/address.rb', line 60 def user addr = @address || ''; i = addr.rindex('@') i.nil? ? addr : addr[0 ... i] end |