Class: InternetMessage::Group

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(display_name, mailbox_list) ⇒ Group

Returns a new instance of Group.

Parameters:

  • display_name (String)
  • mailbox_list (Array of Mailbox)


27
28
29
# File 'lib/internet_message/group.rb', line 27

def initialize(display_name, mailbox_list)
  @display_name, @mailbox_list = display_name, mailbox_list
end

Instance Attribute Details

#display_nameObject (readonly)

Returns the value of attribute display_name.



23
24
25
# File 'lib/internet_message/group.rb', line 23

def display_name
  @display_name
end

#mailbox_listObject (readonly)

Returns the value of attribute mailbox_list.



23
24
25
# File 'lib/internet_message/group.rb', line 23

def mailbox_list
  @mailbox_list
end

Class Method Details

.parse(src, decode_mime_header = nil) ⇒ Group

Parameters:

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

    Set true to decode MIME header (RFC2047).

Returns:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/internet_message/group.rb', line 8

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}
  i = tokens.index(Token.new(:CHAR, ':'))
  j = tokens.index(Token.new(:CHAR, ';')) || tokens.size
  if i and i < j
    disp_tokens = tokens[0..i-1]
    display_name = i == 0 ? '' : decode_mime_header ? InternetMessage.decode_mime_header_words(disp_tokens) : disp_tokens.join(' ')
    mailbox_list = Mailbox.parse_list(tokens[i+1..j-1], decode_mime_header)
    Group.new(display_name, mailbox_list)
  else
    Group.new('', Mailbox.parse_list(tokens))
  end
end

Instance Method Details

#to_sObject



32
33
34
35
36
37
38
39
40
41
# File 'lib/internet_message/group.rb', line 32

def to_s
  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}: "+mailbox_list.join(', ')+';'
end