Skip to main content

Module parsers

Module parsers 

Source
Expand description

Text formatting parsers: HTML and Markdown ↔ Telegram [MessageEntity]

§Markdown (Telegram-flavoured)

§Parsing (parse_markdown)

SyntaxEntity
**bold** or *bold*Bold
__italic__ or _italic_Italic
~~strike~~Strikethrough
||spoiler||Spoiler
`code`Code
```lang\npre\n```Pre (code block)
[text](url)TextUrl
[text](tg://user?id=123)MentionName
![text](tg://emoji?id=123)CustomEmoji
\*, \_, \~Escaped literal char

§Generating (generate_markdown)

Produces the same syntax above for all supported entity types. Underline has no unambiguous markdown delimiter and is silently skipped.

§HTML

Supported tags: <b>, <strong>, <i>, <em>, <u>, <s>, <del>, <code>, <pre>, <tg-spoiler>, <a href="url">, <tg-emoji emoji-id="id">text</tg-emoji>

§Feature gates

  • html : enables parse_html / generate_html via the built-in hand-rolled parser (zero extra deps).
  • html5ever: replaces parse_html with a spec-compliant html5ever tokenizer. generate_html is always the same hand-rolled generator.

Functions§

generate_html
Generate Telegram-compatible HTML from plain text + entities.
generate_markdown
Generate Telegram markdown from plain text + entities.
parse_htmlhtml5ever
Parse a Telegram-compatible HTML string into (plain_text, entities).
parse_markdown
Parse Telegram-flavoured markdown into (plain_text, entities).