annotate framework/env/encode/mime/mailbox_list_header_line.lua @ 60:f2fe38a54504
Bugfix in function encode.mime.mailbox_list_header_line(...), which caused arguments to be modified
author |
jbe |
date |
Mon Mar 05 19:08:49 2012 +0100 (2012-03-05) |
parents |
9fdfb27f8e67 |
children |
|
rev |
line source |
jbe/bsw@0
|
1 function encode.mime.mailbox_list_header_line(key, mailboxes)
|
jbe/bsw@0
|
2 local mailboxes = mailboxes
|
jbe/bsw@0
|
3 if not mailboxes then
|
jbe/bsw@0
|
4 mailboxes = {}
|
jbe@60
|
5 elseif
|
jbe@60
|
6 type(mailboxes) == "string" or
|
jbe@60
|
7 mailboxes.address or mailboxes.name
|
jbe@60
|
8 then
|
jbe/bsw@0
|
9 mailboxes = { mailboxes }
|
jbe/bsw@0
|
10 end
|
jbe/bsw@0
|
11 local indentation = ""
|
jbe/bsw@0
|
12 for i = 1, #key + #(": ") do
|
jbe/bsw@0
|
13 indentation = indentation .. " "
|
jbe/bsw@0
|
14 end
|
jbe/bsw@0
|
15 local parts = { key, ": " }
|
jbe/bsw@0
|
16 local first = true
|
jbe/bsw@0
|
17 for idx, mailbox in ipairs(mailboxes) do
|
jbe/bsw@0
|
18 local name, address
|
jbe/bsw@0
|
19 if type(mailbox) == "string" then
|
jbe/bsw@0
|
20 name, address = nil, mailbox
|
jbe/bsw@0
|
21 else
|
jbe/bsw@0
|
22 name, address = mailbox.name, mailbox.address
|
jbe/bsw@0
|
23 end
|
jbe/bsw@0
|
24 if address and not string.find(
|
jbe/bsw@0
|
25 address,
|
jbe/bsw@0
|
26 "^[0-9A-Za-z!#%$%%&'%*%+%-/=%?%^_`{|}~%.]+" ..
|
jbe/bsw@0
|
27 "@[0-9A-Za-z!#%$%%&'%*%+%-/=%?%^_`{|}~%.]+$"
|
jbe/bsw@0
|
28 )
|
jbe/bsw@0
|
29 then
|
jbe/bsw@0
|
30 if name then
|
jbe/bsw@0
|
31 name, address = name .. " <" .. address .. ">", nil
|
jbe/bsw@0
|
32 else
|
jbe/bsw@0
|
33 name, address = address, nil
|
jbe/bsw@0
|
34 end
|
jbe/bsw@0
|
35 end
|
jbe/bsw@0
|
36 if name or address then
|
jbe/bsw@0
|
37 if not first then
|
jbe/bsw@0
|
38 parts[#parts+1] = ",\r\n"
|
jbe/bsw@0
|
39 parts[#parts+1] = indentation
|
jbe/bsw@0
|
40 end
|
jbe/bsw@0
|
41 if name then
|
jbe/bsw@0
|
42 parts[#parts+1] = encode.mime.atom_token(name)
|
jbe/bsw@0
|
43 parts[#parts+1] = " <"
|
jbe/bsw@0
|
44 if address then
|
jbe/bsw@0
|
45 parts[#parts+1] = address
|
jbe/bsw@0
|
46 end
|
jbe/bsw@0
|
47 parts[#parts+1] = ">"
|
jbe/bsw@0
|
48 else
|
jbe/bsw@0
|
49 parts[#parts+1] = address
|
jbe/bsw@0
|
50 end
|
jbe/bsw@0
|
51 first = false
|
jbe/bsw@0
|
52 end
|
jbe/bsw@0
|
53 end
|
jbe/bsw@0
|
54 if first then
|
jbe/bsw@0
|
55 return ""
|
jbe/bsw@0
|
56 end
|
jbe/bsw@0
|
57 parts[#parts+1] = "\r\n"
|
jbe/bsw@0
|
58 return table.concat(parts)
|
jbe/bsw@0
|
59 end
|