|
|
- -- local _M = {}
-
- -- if module then
- -- mbox = _M
- -- end
-
- -- function _M.split_message(message_s)
- -- local message = {}
- -- message_s = string.gsub(message_s, "\r\n", "\n")
- -- string.gsub(message_s, "^(.-\n)\n", function (h) message.headers = h end)
- -- string.gsub(message_s, "^.-\n\n(.*)", function (b) message.body = b end)
- -- if not message.body then
- -- string.gsub(message_s, "^\n(.*)", function (b) message.body = b end)
- -- end
- -- if not message.headers and not message.body then
- -- message.headers = message_s
- -- end
- -- return message.headers or "", message.body or ""
- -- end
-
- -- function _M.split_headers(headers_s)
- -- local headers = {}
- -- headers_s = string.gsub(headers_s, "\r\n", "\n")
- -- headers_s = string.gsub(headers_s, "\n[ ]+", " ")
- -- string.gsub("\n" .. headers_s, "\n([^\n]+)", function (h) table.insert(headers, h) end)
- -- return headers
- -- end
-
- -- function _M.parse_header(header_s)
- -- header_s = string.gsub(header_s, "\n[ ]+", " ")
- -- header_s = string.gsub(header_s, "\n+", "")
- -- local _, __, name, value = string.find(header_s, "([^%s:]-):%s*(.*)")
- -- return name, value
- -- end
-
- -- function _M.parse_headers(headers_s)
- -- local headers_t = _M.split_headers(headers_s)
- -- local headers = {}
- -- for i = 1, #headers_t do
- -- local name, value = _M.parse_header(headers_t[i])
- -- if name then
- -- name = string.lower(name)
- -- if headers[name] then
- -- headers[name] = headers[name] .. ", " .. value
- -- else headers[name] = value end
- -- end
- -- end
- -- return headers
- -- end
-
- -- function _M.parse_from(from)
- -- local _, __, name, address = string.find(from, "^%s*(.-)%s*%<(.-)%>")
- -- if not address then
- -- _, __, address = string.find(from, "%s*(.+)%s*")
- -- end
- -- name = name or ""
- -- address = address or ""
- -- if name == "" then name = address end
- -- name = string.gsub(name, '"', "")
- -- return name, address
- -- end
-
- -- function _M.split_mbox(mbox_s)
- -- local mbox = {}
- -- mbox_s = string.gsub(mbox_s, "\r\n", "\n") .."\n\nFrom \n"
- -- local nj, i, j = 1, 1, 1
- -- while 1 do
- -- i, nj = string.find(mbox_s, "\n\nFrom .-\n", j)
- -- if not i then break end
- -- local message = string.sub(mbox_s, j, i-1)
- -- table.insert(mbox, message)
- -- j = nj+1
- -- end
- -- return mbox
- -- end
-
- -- function _M.parse(mbox_s)
- -- local mbox = _M.split_mbox(mbox_s)
- -- for i = 1, #mbox do
- -- mbox[i] = _M.parse_message(mbox[i])
- -- end
- -- return mbox
- -- end
-
- -- function _M.parse_message(message_s)
- -- local message = {}
- -- message.headers, message.body = _M.split_message(message_s)
- -- message.headers = _M.parse_headers(message.headers)
- -- return message
- -- end
-
- -- return _M
|