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