Mercurial > prosody-modules
annotate mod_latex/mod_latex.lua @ 4249:64aa1d9d70ac
mod_rest: Catch and log errors in callback promise chain
From the code it looks like it should be possible to reply to an error
stanza, but it did not. Turns out I was saved by my local developer mode
module which throws errors if an attempt is made to create an errror
reply to an error stanza. However nothing collects this error from the
promise, so all I got was confusion.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 15 Nov 2020 16:25:49 +0100 |
parents | df8da7e4c2bf |
children |
rev | line source |
---|---|
126
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 local st = require "stanza"; |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 local urlencode = require "net.http".urlencode; |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 local xmlns_xhtmlim = "http://jabber.org/protocol/xhtml-im"; |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 local xmlns_xhtml = "http://www.w3.org/1999/xhtml"; |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 local function replace_latex(data) |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 local origin, stanza = data.origin, data.stanza; |
1432 | 9 local body = stanza:get_child_text("body"); |
10 if not body or not body:match("%$%$") then | |
126
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 return; |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 end |
1433
df8da7e4c2bf
mod_latex: Log debug message when actually deciding to do LaTeX replacing
Kim Alvefur <zash@zash.se>
parents:
1432
diff
changeset
|
13 module:log("debug", "Replacing latex..."); |
1343
7dbde05b48a9
all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
126
diff
changeset
|
14 |
126
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 local html = st.stanza("html", { xmlns = xmlns_xhtmlim }) |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 :tag("body", { xmlns = xmlns_xhtml }); |
1343
7dbde05b48a9
all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
126
diff
changeset
|
17 |
126
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 local in_latex, last_char; |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 for snippet, up_to in body:gmatch("(.-)%$%$()") do |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 last_char = up_to; |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 if in_latex then |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 -- Render latex and add image, next snippet is text |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 in_latex = nil; |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 html:tag("img", { src = "http://www.mathtran.org/cgi-bin/mathtran?D=2;tex="..urlencode(snippet), alt = snippet }):up(); |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 else |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 -- Add text to HTML, next snippet is latex |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 in_latex = true; |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 html:tag("span"):text(snippet):up(); |
1343
7dbde05b48a9
all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
126
diff
changeset
|
29 |
126
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 end |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 end |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 if last_char < #body then |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 html:tag("span"):text(body:sub(last_char, #body)):up(); |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 end |
1343
7dbde05b48a9
all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
126
diff
changeset
|
35 |
126
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 for n, tag in ipairs(stanza.tags) do |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 module:log("debug", "Tag: %s|%s", tag.attr.xmlns or "", tag.name or ""); |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
38 if tag.name == "html" and tag.attr.xmlns == xmlns_xhtmlim then |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
39 stanza.tags[n] = html; |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
40 for n, child in ipairs(stanza) do |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
41 if child == tag then |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
42 stanza[n] = html; |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
43 end |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
44 end |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
45 return; |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
46 end |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
47 end |
1343
7dbde05b48a9
all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
126
diff
changeset
|
48 |
126
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
49 stanza[#stanza+1] = html; |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
50 stanza.tags[#stanza.tags+1] = html; |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
51 end |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
52 |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
53 module:hook("message/bare", replace_latex, 30); |
e190c1643a8f
mod_latex: New (well, kind of) module for rendering LaTeX in messages and replacing with a rendered embedded image
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
54 module:hook("message/full", replace_latex, 30); |