aboutsummaryrefslogtreecommitdiff
path: root/utils/mistune_emote.py
diff options
context:
space:
mode:
authorGravatar Chris Xiong <chirs241097@gmail.com> 2024-07-24 23:40:11 -0400
committerGravatar Chris Xiong <chirs241097@gmail.com> 2024-07-24 23:40:11 -0400
commitb736068ee7b82e05c2ede8bc48ace7ffa4709e29 (patch)
treeeaa3cce9fdd9973043a7a55613584f90f6598a20 /utils/mistune_emote.py
downloadnotekins-b736068ee7b82e05c2ede8bc48ace7ffa4709e29.tar.xz
Initial commit.
Diffstat (limited to 'utils/mistune_emote.py')
-rw-r--r--utils/mistune_emote.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/utils/mistune_emote.py b/utils/mistune_emote.py
new file mode 100644
index 0000000..6c557a5
--- /dev/null
+++ b/utils/mistune_emote.py
@@ -0,0 +1,21 @@
+# Chris Xiong 2024
+# License: Expat (MIT)
+from config import conf
+
+EMOTE_PATTERN = r":(?!\s)(?P<emote_name>.+?)(?!\s):"
+
+emote_root = f"{conf.SERVED_DATA_ROOT}/emotes"
+emote_extension = ".webp"
+
+def parse_inline_emote(inline, m, state):
+ ename = m.group("emote_name")
+ state.append_token({"type": "inline_emote", "raw": ename})
+ return m.end()
+
+def render_inline_emote(renderer, ename):
+ return f'<img class="emote" src="{emote_root}/{ename}{emote_extension}" alt="{ename}" title="{ename}">'
+
+def emote(md):
+ md.inline.register("inline_emote", EMOTE_PATTERN, parse_inline_emote, before="link")
+ if md.renderer and md.renderer.NAME == "html":
+ md.renderer.register("inline_emote", render_inline_emote)