Class: InternetMessage::Mailbox

Inherits:
Object
  • Object
show all
Defined in:
lib/internet_message/mailbox.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(addr, display_name = nil) ⇒ Mailbox #initialize(local_part, domain, display_name = nil) ⇒ Mailbox

Returns a new instance of Mailbox.

Overloads:

  • #initialize(addr, display_name = nil) ⇒ Mailbox

    Parameters:

    • addr (Address)
    • display_name (String) (defaults to: nil)
  • #initialize(local_part, domain, display_name = nil) ⇒ Mailbox

    Parameters:

    • local_part (String)
    • domain (String)
    • display_name (String) (defaults to: nil)


54
55
56
57
58
59
60
61
62
63
64
# File 'lib/internet_message/mailbox.rb', line 54

def initialize(addr, *args)
  if addr.is_a? Address and args.size <= 1
    @address = addr
    @display_name = args.first
  elsif args.size >= 1 and args.size <= 2
    @address = Address.new(addr, args[0])
    @display_name = args[1]
  else
    raise ArgumentError
  end
end

Instance Attribute Details

#addressObject (readonly)

Returns the value of attribute address.



45
46
47
# File 'lib/internet_message/mailbox.rb', line 45

def address
  @address
end

#display_nameObject (readonly)

Returns the value of attribute display_name.



45
46
47
# File 'lib/internet_message/mailbox.rb', line 45

def display_name
  @display_name
end

Class Method Details

.parse(src, decode_mime_header = nil) ⇒ Mailbox

Parameters:

  • src (String, Array of Tokenizer)
  • decode_mime_header (true, false) (defaults to: nil)

    Set true to decode MIME header (RFC2047).

Returns:



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/internet_message/mailbox.rb', line 9

def self.parse(src, decode_mime_header=nil)
  tokens = src.is_a?(String) ? Tokenizer.new(src).tokenize : src.dup
  tokens.delete_if{|t| t.type == :WSP or t.type == :COMMENT}
  if i = tokens.index(Token.new(:CHAR, '<'))
    display_name = decode_mime_header ? InternetMessage.decode_mime_header_words(tokens[0..i-1]) : tokens[0..i-1].join(' ')
    if j = tokens.index(Token.new(:CHAR, '>'))
      tokens = tokens[i+1..j-1]
    else
      tokens = tokens[i+1..-1]
    end
  end
  i = tokens.rindex(Token.new(:CHAR, '@'))
  return unless i
  local = i == 0 ? '' : tokens[0..i-1].join
  domain = tokens[i+1..-1].join
  Mailbox.new(Address.new(local, domain), display_name)
end

.parse_list(src, decode_mime_header = nil) ⇒ Array of Mailbox

Parameters:

  • src (String, Array of Tokenizer)
  • decode_mime_header (true, false) (defaults to: nil)

    Set true to decode MIME header (RFC2047).

Returns:



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/internet_message/mailbox.rb', line 30

def self.parse_list(src, decode_mime_header=nil)
  tokens = src.is_a?(String) ? Tokenizer.new(src).tokenize : src.dup
  ret = []
  until tokens.empty?
    i = tokens.index(Token.new(:CHAR, ','))
    break unless i
    if i > 0
      ret.push self.parse(tokens.slice!(0, i), decode_mime_header)
    end
    tokens.shift
  end
  ret.push self.parse(tokens, decode_mime_header) unless tokens.empty?
  ret
end

Instance Method Details

#domainString

Returns domain.

Returns:

  • (String)

    domain



72
73
74
# File 'lib/internet_message/mailbox.rb', line 72

def domain
  @address.domain
end

#local_partString

Returns local_part.

Returns:

  • (String)

    local_part



67
68
69
# File 'lib/internet_message/mailbox.rb', line 67

def local_part
  @address.local_part
end

#to_sObject



77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/internet_message/mailbox.rb', line 77

def to_s
  if @display_name
    d = @display_name.split(/[ \t]+/).map do |w|
      if w =~ /\A[0-9a-zA-Z\!\#\$\%\'\*\+\-\/\=\?\^\_\`\{\|\}\~]+\z/n
        w
      else
        quote_string w
      end
    end.join(' ')
    "#{d} <#{@address.to_s}>"
  else
    @address.to_s
  end
end