Software /
code /
prosody-modules
Annotate
mod_latex/mod_latex.lua @ 5424:b45d9a81b3da
mod_http_oauth2: Revert role selector, going to try something else
Back out f2c7bb3af600
Allowing only a single role to be encoded into the grant takes away the
possibility of having multiple roles in the grant, one of which is
selected when issuing an access token. It also takes away the ability to
have zero roles granted, which could be useful e.g. when you only need
OIDC scopes.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 07 May 2023 19:40:57 +0200 |
parent | 1433:df8da7e4c2bf |
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); |