re-add emojis to babycode parser

This commit is contained in:
Lera Elvoé 2025-07-04 19:06:22 +03:00
parent 443c25c09b
commit 692a1d6b2b
Signed by: yagich
SSH Key Fingerprint: SHA256:6xjGb6uA7lAVcULa7byPEN//rQ0wPoG+UzYVMfZnbvc

View File

@ -28,6 +28,53 @@ TAGS = {
"ol": lambda children, attr: f"<ol>{tag_list(children)}</ol>", "ol": lambda children, attr: f"<ol>{tag_list(children)}</ol>",
} }
def make_emoji(name, code):
return f' <img class=emoji src="/static/emoji/{name}.png" alt="{name}" title=":{code}:">'
EMOJI = {
'angry': make_emoji('angry', 'angry'),
'(': make_emoji('frown', '('),
'D': make_emoji('grin', 'D'),
'imp': make_emoji('imp', 'imp'),
'angryimp': make_emoji('impangry', 'angryimp'),
'impangry': make_emoji('impangry', 'impangry'),
'lobster': make_emoji('lobster', 'lobster'),
'|': make_emoji('neutral', '|'),
'pensive': make_emoji('pensive', 'pensive'),
')': make_emoji('smile', ')'),
'smiletear': make_emoji('smiletear', 'smiletear'),
'crytear': make_emoji('smiletear', 'crytear'),
',': make_emoji('sob', ','),
'T': make_emoji('sob', 'T'),
'cry': make_emoji('sob', 'cry'),
'sob': make_emoji('sob', 'sob'),
'o': make_emoji('surprised', 'o'),
'O': make_emoji('surprised', 'O'),
'hmm': make_emoji('think', 'hmm'),
'think': make_emoji('think', 'think'),
'thinking': make_emoji('think', 'thinking'),
'P': make_emoji('tongue', 'P'),
'p': make_emoji('tongue', 'p'),
'weary': make_emoji('weary', 'weary'),
';': make_emoji('wink', ';'),
'wink': make_emoji('wink', 'wink'),
}
TEXT_ONLY = ["code"] TEXT_ONLY = ["code"]
def break_lines(text): def break_lines(text):
@ -40,8 +87,10 @@ def babycode_to_html(s):
parser = Parser(subj) parser = Parser(subj)
parser.valid_bbcode_tags = TAGS.keys() parser.valid_bbcode_tags = TAGS.keys()
parser.bbcode_tags_only_text_children = TEXT_ONLY parser.bbcode_tags_only_text_children = TEXT_ONLY
parser.valid_emotes = EMOJI.keys()
elements = parser.parse() elements = parser.parse()
print(elements)
out = "" out = ""
def fold(element, nobr): def fold(element, nobr):
if isinstance(element, str): if isinstance(element, str):
@ -59,6 +108,8 @@ def babycode_to_html(s):
return res return res
case "link": case "link":
return f"<a href=\"{element['url']}\">{element['url']}</a>" return f"<a href=\"{element['url']}\">{element['url']}</a>"
case 'emote':
return EMOJI[element['name']]
case "rule": case "rule":
return "<hr>" return "<hr>"
for e in elements: for e in elements: