mirror of
https://github.com/pyrogram/pyrogram
synced 2025-09-01 14:55:12 +00:00
Add languages to "pre" tags (HTML and Markdown) #1118
* added `language` to entities when unparsing (both markdown and html) * added `language` to entities also when parsing (html only) * Update html.py * Update markdown.py * Update markdown.py * Update markdown.py Co-authored-by: Dan <14043624+delivrance@users.noreply.github.com>
This commit is contained in:
@@ -61,7 +61,7 @@ class Parser(HTMLParser):
|
|||||||
entity = raw.types.MessageEntityCode
|
entity = raw.types.MessageEntityCode
|
||||||
elif tag == "pre":
|
elif tag == "pre":
|
||||||
entity = raw.types.MessageEntityPre
|
entity = raw.types.MessageEntityPre
|
||||||
extra["language"] = ""
|
extra["language"] = attrs.get("language", "")
|
||||||
elif tag == "spoiler":
|
elif tag == "spoiler":
|
||||||
entity = raw.types.MessageEntitySpoiler
|
entity = raw.types.MessageEntitySpoiler
|
||||||
elif tag == "a":
|
elif tag == "a":
|
||||||
@@ -172,9 +172,13 @@ class HTML:
|
|||||||
name = entity_type.name[0].lower()
|
name = entity_type.name[0].lower()
|
||||||
start_tag = f"<{name}>"
|
start_tag = f"<{name}>"
|
||||||
end_tag = f"</{name}>"
|
end_tag = f"</{name}>"
|
||||||
|
elif entity_type == MessageEntityType.PRE:
|
||||||
|
name = entity_type.name.lower()
|
||||||
|
language = getattr(entity, "language", "") or ""
|
||||||
|
start_tag = f'<{name} language="{language}">' if language else f"<{name}>"
|
||||||
|
end_tag = f"</{name}>"
|
||||||
elif entity_type in (
|
elif entity_type in (
|
||||||
MessageEntityType.CODE,
|
MessageEntityType.CODE,
|
||||||
MessageEntityType.PRE,
|
|
||||||
MessageEntityType.BLOCKQUOTE,
|
MessageEntityType.BLOCKQUOTE,
|
||||||
MessageEntityType.SPOILER,
|
MessageEntityType.SPOILER,
|
||||||
):
|
):
|
||||||
|
@@ -105,6 +105,12 @@ class Markdown:
|
|||||||
delims.remove(delim)
|
delims.remove(delim)
|
||||||
tag = CLOSING_TAG.format(tag)
|
tag = CLOSING_TAG.format(tag)
|
||||||
|
|
||||||
|
if delim == PRE_DELIM and delim in delims:
|
||||||
|
delim_and_language = text[text.find(PRE_DELIM):].split("\n")[0]
|
||||||
|
language = delim_and_language[len(PRE_DELIM):]
|
||||||
|
text = utils.replace_once(text, delim_and_language, f'<pre language="{language}">', start)
|
||||||
|
continue
|
||||||
|
|
||||||
text = utils.replace_once(text, delim, tag, start)
|
text = utils.replace_once(text, delim, tag, start)
|
||||||
|
|
||||||
return await self.html.parse(text)
|
return await self.html.parse(text)
|
||||||
@@ -130,7 +136,11 @@ class Markdown:
|
|||||||
start_tag = end_tag = STRIKE_DELIM
|
start_tag = end_tag = STRIKE_DELIM
|
||||||
elif entity_type == MessageEntityType.CODE:
|
elif entity_type == MessageEntityType.CODE:
|
||||||
start_tag = end_tag = CODE_DELIM
|
start_tag = end_tag = CODE_DELIM
|
||||||
elif entity_type in (MessageEntityType.PRE, MessageEntityType.BLOCKQUOTE):
|
elif entity_type == MessageEntityType.PRE:
|
||||||
|
language = getattr(entity, "language", "") or ""
|
||||||
|
start_tag = f"{PRE_DELIM}{language}\n"
|
||||||
|
end_tag = f"\n{PRE_DELIM}"
|
||||||
|
elif entity_type == MessageEntityType.BLOCKQUOTE:
|
||||||
start_tag = end_tag = PRE_DELIM
|
start_tag = end_tag = PRE_DELIM
|
||||||
elif entity_type == MessageEntityType.SPOILER:
|
elif entity_type == MessageEntityType.SPOILER:
|
||||||
start_tag = end_tag = SPOILER_DELIM
|
start_tag = end_tag = SPOILER_DELIM
|
||||||
|
Reference in New Issue
Block a user