Mercurial > prosody-modules
annotate mod_latex/mod_latex.lua @ 5466:398d936e77fb
mod_http_oauth2: Add support for the OpenID 'login_hint' parameter
This allows the client to suggest to the authorization screen which user
is trying to login, so they don't have to fill that in twice if they
already did so at the client.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 17 May 2023 18:49:22 +0200 |
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); |