aboutsummaryrefslogtreecommitdiff
path: root/utils/mistune_emote.py
blob: 6c557a572e9b1bbce2aac9d7cb3552929bf0ba8b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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)