初始化提交
This commit is contained in:
		
							
								
								
									
										94
									
								
								Plugins/slua_unreal/External/luasocket/mbox.lua.inc
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								Plugins/slua_unreal/External/luasocket/mbox.lua.inc
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,94 @@ | ||||
| R"-++**++-( | ||||
| 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) | ||||
|     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 | ||||
| )-++**++-"; | ||||
		Reference in New Issue
	
	Block a user