Mercurial > prosody-modules
comparison mod_pastebin/mod_pastebin.lua @ 446:56f1c29ee7f1
mod_pastebin: Some experimental summary changes
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Fri, 23 Sep 2011 21:15:24 +0100 |
| parents | 66ca5e4d9f7b |
| children | 3f101f7a26d0 |
comparison
equal
deleted
inserted
replaced
| 445:66ca5e4d9f7b | 446:56f1c29ee7f1 |
|---|---|
| 18 end | 18 end |
| 19 return seq; | 19 return seq; |
| 20 end | 20 end |
| 21 | 21 |
| 22 local pastebin_private_messages = module:get_option_boolean("pastebin_private_messages", hosts[module.host].type ~= "component"); | 22 local pastebin_private_messages = module:get_option_boolean("pastebin_private_messages", hosts[module.host].type ~= "component"); |
| 23 local max_summary_length = module:get_option_number("pastebin_summary_length", 150); | |
| 24 local length_threshold = module:get_option_number("pastebin_threshold", 500); | 23 local length_threshold = module:get_option_number("pastebin_threshold", 500); |
| 25 local line_threshold = module:get_option_number("pastebin_line_threshold", 4); | 24 local line_threshold = module:get_option_number("pastebin_line_threshold", 4); |
| 25 local max_summary_length = module:get_option_number("pastebin_summary_length", 150); | |
| 26 local html_preview = module:get_option_boolean("pastebin_html_preview", true); | |
| 26 | 27 |
| 27 local base_url = module:get_option_string("pastebin_url"); | 28 local base_url = module:get_option_string("pastebin_url"); |
| 28 | 29 |
| 29 -- Seconds a paste should live for in seconds (config is in hours), default 24 hours | 30 -- Seconds a paste should live for in seconds (config is in hours), default 24 hours |
| 30 local expire_after = math.floor(module:get_option_number("pastebin_expire_after", 24) * 3600); | 31 local expire_after = math.floor(module:get_option_number("pastebin_expire_after", 24) * 3600); |
| 85 body = body:gsub("^" .. trigger_string, "", 1); | 86 body = body:gsub("^" .. trigger_string, "", 1); |
| 86 end | 87 end |
| 87 local url = pastebin_text(body); | 88 local url = pastebin_text(body); |
| 88 module:log("debug", "Pasted message as %s", url); | 89 module:log("debug", "Pasted message as %s", url); |
| 89 --module:log("debug", " stanza[bodyindex] = %q", tostring( stanza[bodyindex])); | 90 --module:log("debug", " stanza[bodyindex] = %q", tostring( stanza[bodyindex])); |
| 90 local summary = body:sub(1, max_summary_length):gsub(utf8_pattern, drop_invalid_utf8) or ""; | 91 local summary = (body:sub(1, max_summary_length):gsub(utf8_pattern, drop_invalid_utf8) or ""):match("[^\n]+") or ""; |
| 91 stanza[bodyindex][1] = summary:match("^([^\n:]*:?)").." "..url; | 92 summary = summary:match("^%s*(.-)%s*$"); |
| 92 local html = st.stanza("html", { xmlns = xmlns_xhtmlim }):tag("body", { xmlns = xmlns_xhtml }); | 93 local summary_prefixed = summary:match("[,:]$"); |
| 93 html:tag("p"):text(summary):up(); | 94 stanza[bodyindex][1] = (summary_prefixed and (summary.." ") or "")..url; |
| 94 html:tag("a", { href = url }):text("[...]"):up(); | 95 |
| 95 stanza[htmlindex or #stanza+1] = html; | 96 if html_preview then |
| 97 local line_count = select(2, body:gsub("\n", "%0")); | |
| 98 local link_text = ("[view %spaste (%d line%s)]"):format(summary_prefixed and "" or "rest of ", line_count, line_count == 1 and "" or "s"); | |
| 99 local html = st.stanza("html", { xmlns = xmlns_xhtmlim }):tag("body", { xmlns = xmlns_xhtml }); | |
| 100 html:tag("p"):text(summary.." "):up(); | |
| 101 html:tag("a", { href = url }):text(link_text):up(); | |
| 102 stanza[htmlindex or #stanza+1] = html; | |
| 103 end | |
| 96 end | 104 end |
| 97 end | 105 end |
| 98 | 106 |
| 99 module:hook("message/bare", check_message); | 107 module:hook("message/bare", check_message); |
| 100 if pastebin_private_messages then | 108 if pastebin_private_messages then |
