lib/mail_address/address.rb in mail_address-1.2.9 vs lib/mail_address/address.rb in mail_address-1.2.10

- old
+ new

@@ -19,28 +19,30 @@ @phrase = original if @address.nil? end ATEXT = '[\-\w !#$%&\'*+/=?^`{|}~]' - def format + def format(enquote = false) addr = [] return @original if @address.nil? + email_address = enquote ? quoted_address : @address + if !@phrase.nil? && @phrase.length > 0 then if @phrase.match(/\A\(/) && @phrase.match(/\)\z/) - addr.push(@address) if !@address.nil? && @address.length > 0 + addr.push(email_address) if !@address.nil? && @address.length > 0 addr.push(@phrase) else addr.push( @phrase.match(/^(?:\s*#{ATEXT}\s*)+$/) ? @phrase : @phrase.match(/(?<!\\)"/) ? @phrase : %Q("#{@phrase}") ) - addr.push "<#{@address}>" if !@address.nil? && @address.length > 0 + addr.push "<#{email_address}>" if !@address.nil? && @address.length > 0 end elsif !@address.nil? && @address.length > 0 then - addr.push(@address) + addr.push(email_address) end addr.join(' ') end def name @@ -57,9 +59,19 @@ def user addr = @address || ''; i = addr.rindex('@') i.nil? ? addr : addr[0 ... i] + end + + def quoted_address + if @address + if self.user.include?('..') || self.user.end_with?('.') + local_part = self.user.gsub(/(\A"|"\z)/, '') + return "\"#{local_part}\"@#{self.host}" + end + end + @address end private # given a comment, attempt to extract a person's name