webmcp
diff 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 diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/framework/env/encode/mime/mailbox_list_header_line.lua Sun Oct 25 12:00:00 2009 +0100 1.3 @@ -0,0 +1,58 @@ 1.4 +function encode.mime.mailbox_list_header_line(key, mailboxes) 1.5 + local mailboxes = mailboxes 1.6 + if not mailboxes then 1.7 + mailboxes = {} 1.8 + elseif type(mailboxes) == "string" then 1.9 + mailboxes = { mailboxes } 1.10 + elseif mailboxes.address or mailboxes.name then 1.11 + table.insert(mailboxes, mailboxes) 1.12 + end 1.13 + local indentation = "" 1.14 + for i = 1, #key + #(": ") do 1.15 + indentation = indentation .. " " 1.16 + end 1.17 + local parts = { key, ": " } 1.18 + local first = true 1.19 + for idx, mailbox in ipairs(mailboxes) do 1.20 + local name, address 1.21 + if type(mailbox) == "string" then 1.22 + name, address = nil, mailbox 1.23 + else 1.24 + name, address = mailbox.name, mailbox.address 1.25 + end 1.26 + if address and not string.find( 1.27 + address, 1.28 + "^[0-9A-Za-z!#%$%%&'%*%+%-/=%?%^_`{|}~%.]+" .. 1.29 + "@[0-9A-Za-z!#%$%%&'%*%+%-/=%?%^_`{|}~%.]+$" 1.30 + ) 1.31 + then 1.32 + if name then 1.33 + name, address = name .. " <" .. address .. ">", nil 1.34 + else 1.35 + name, address = address, nil 1.36 + end 1.37 + end 1.38 + if name or address then 1.39 + if not first then 1.40 + parts[#parts+1] = ",\r\n" 1.41 + parts[#parts+1] = indentation 1.42 + end 1.43 + if name then 1.44 + parts[#parts+1] = encode.mime.atom_token(name) 1.45 + parts[#parts+1] = " <" 1.46 + if address then 1.47 + parts[#parts+1] = address 1.48 + end 1.49 + parts[#parts+1] = ">" 1.50 + else 1.51 + parts[#parts+1] = address 1.52 + end 1.53 + first = false 1.54 + end 1.55 + end 1.56 + if first then 1.57 + return "" 1.58 + end 1.59 + parts[#parts+1] = "\r\n" 1.60 + return table.concat(parts) 1.61 +end