webmcp

view framework/env/encode/mime/mailbox_list_header_line.lua @ 0:9fdfb27f8e67

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

Impressum / About Us