Download rtme/lib/python3.10/site-packages/mistune/plugins/formatting.py from ckadirt/backup_rtme: direct link, hf CLI and curl.
- Browser
- Download file 5.44 kB
-
https://huggingface.co/ckadirt/backup_rtme/resolve/main/rtme/lib/python3.10/site-packages/mistune/plugins/formatting.py
- Command line
-
hf download hf://ckadirt/backup_rtme/rtme/lib/python3.10/site-packages/mistune/plugins/formatting.py
-
curl -L -o formatting.py https://huggingface.co/ckadirt/backup_rtme/resolve/main/rtme/lib/python3.10/site-packages/mistune/plugins/formatting.py
5.44 kB
| import re | |
| from typing import TYPE_CHECKING, Match, Optional, Pattern | |
| from ..helpers import PREVENT_BACKSLASH | |
| if TYPE_CHECKING: | |
| from ..core import BaseRenderer, InlineState | |
| from ..inline_parser import InlineParser | |
| from ..markdown import Markdown | |
| __all__ = ["strikethrough", "mark", "insert", "superscript", "subscript"] | |
| _STRIKE_END = re.compile(r"(?:" + PREVENT_BACKSLASH + r"\\~|[^\s~])~~(?!~)") | |
| _MARK_END = re.compile(r"(?:" + PREVENT_BACKSLASH + r"\\=|[^\s=])==(?!=)") | |
| _INSERT_END = re.compile(r"(?:" + PREVENT_BACKSLASH + r"\\\^|[^\s^])\^\^(?!\^)") | |
| SUPERSCRIPT_PATTERN = r"\^(?:" + PREVENT_BACKSLASH + r"\\\^|\S|\\ )+?\^" | |
| SUBSCRIPT_PATTERN = r"~(?:" + PREVENT_BACKSLASH + r"\\~|\S|\\ )+?~" | |
| def parse_strikethrough(inline: "InlineParser", m: Match[str], state: "InlineState") -> Optional[int]: | |
| return _parse_to_end(inline, m, state, "strikethrough", _STRIKE_END) | |
| def render_strikethrough(renderer: "BaseRenderer", text: str) -> str: | |
| return "<del>" + text + "</del>" | |
| def parse_mark(inline: "InlineParser", m: Match[str], state: "InlineState") -> Optional[int]: | |
| return _parse_to_end(inline, m, state, "mark", _MARK_END) | |
| def render_mark(renderer: "BaseRenderer", text: str) -> str: | |
| return "<mark>" + text + "</mark>" | |
| def parse_insert(inline: "InlineParser", m: Match[str], state: "InlineState") -> Optional[int]: | |
| return _parse_to_end(inline, m, state, "insert", _INSERT_END) | |
| def render_insert(renderer: "BaseRenderer", text: str) -> str: | |
| return "<ins>" + text + "</ins>" | |
| def parse_superscript(inline: "InlineParser", m: Match[str], state: "InlineState") -> int: | |
| return _parse_script(inline, m, state, "superscript") | |
| def render_superscript(renderer: "BaseRenderer", text: str) -> str: | |
| return "<sup>" + text + "</sup>" | |
| def parse_subscript(inline: "InlineParser", m: Match[str], state: "InlineState") -> int: | |
| return _parse_script(inline, m, state, "subscript") | |
| def render_subscript(renderer: "BaseRenderer", text: str) -> str: | |
| return "<sub>" + text + "</sub>" | |
| def _parse_to_end( | |
| inline: "InlineParser", | |
| m: Match[str], | |
| state: "InlineState", | |
| tok_type: str, | |
| end_pattern: Pattern[str], | |
| ) -> Optional[int]: | |
| pos = m.end() | |
| m1 = end_pattern.search(state.src, pos) | |
| if not m1: | |
| return None | |
| end_pos = m1.end() | |
| text = state.src[pos : end_pos - 2] | |
| new_state = state.copy() | |
| new_state.src = text | |
| children = inline.render(new_state) | |
| state.append_token({"type": tok_type, "children": children}) | |
| return end_pos | |
| def _parse_script(inline: "InlineParser", m: Match[str], state: "InlineState", tok_type: str) -> int: | |
| text = m.group(0) | |
| new_state = state.copy() | |
| new_state.src = text[1:-1].replace("\\ ", " ") | |
| children = inline.render(new_state) | |
| state.append_token({"type": tok_type, "children": children}) | |
| return m.end() | |
| def strikethrough(md: "Markdown") -> None: | |
| """A mistune plugin to support strikethrough. Spec defined by | |
| GitHub flavored Markdown and commonly used by many parsers: | |
| .. code-block:: text | |
| ~~This was mistaken text~~ | |
| It will be converted into HTML: | |
| .. code-block:: html | |
| <del>This was mistaken text</del> | |
| :param md: Markdown instance | |
| """ | |
| md.inline.register( | |
| "strikethrough", | |
| r"~~(?=[^\s~])", | |
| parse_strikethrough, | |
| before="link", | |
| ) | |
| if md.renderer and md.renderer.NAME == "html": | |
| md.renderer.register("strikethrough", render_strikethrough) | |
| def mark(md: "Markdown") -> None: | |
| """A mistune plugin to add ``<mark>`` tag. Spec defined at | |
| https://facelessuser.github.io/pymdown-extensions/extensions/mark/: | |
| .. code-block:: text | |
| ==mark me== ==mark \\=\\= equal== | |
| :param md: Markdown instance | |
| """ | |
| md.inline.register( | |
| "mark", | |
| r"==(?=[^\s=])", | |
| parse_mark, | |
| before="link", | |
| ) | |
| if md.renderer and md.renderer.NAME == "html": | |
| md.renderer.register("mark", render_mark) | |
| def insert(md: "Markdown") -> None: | |
| """A mistune plugin to add ``<ins>`` tag. Spec defined at | |
| https://facelessuser.github.io/pymdown-extensions/extensions/caret/#insert: | |
| .. code-block:: text | |
| ^^insert me^^ | |
| :param md: Markdown instance | |
| """ | |
| md.inline.register( | |
| "insert", | |
| r"\^\^(?=[^\s\^])", | |
| parse_insert, | |
| before="link", | |
| ) | |
| if md.renderer and md.renderer.NAME == "html": | |
| md.renderer.register("insert", render_insert) | |
| def superscript(md: "Markdown") -> None: | |
| """A mistune plugin to add ``<sup>`` tag. Spec defined at | |
| https://pandoc.org/MANUAL.html#superscripts-and-subscripts: | |
| .. code-block:: text | |
| 2^10^ is 1024. | |
| :param md: Markdown instance | |
| """ | |
| md.inline.register("superscript", SUPERSCRIPT_PATTERN, parse_superscript, before="linebreak") | |
| if md.renderer and md.renderer.NAME == "html": | |
| md.renderer.register("superscript", render_superscript) | |
| def subscript(md: "Markdown") -> None: | |
| """A mistune plugin to add ``<sub>`` tag. Spec defined at | |
| https://pandoc.org/MANUAL.html#superscripts-and-subscripts: | |
| .. code-block:: text | |
| H~2~O is a liquid. | |
| :param md: Markdown instance | |
| """ | |
| md.inline.register("subscript", SUBSCRIPT_PATTERN, parse_subscript, before="linebreak") | |
| if md.renderer and md.renderer.NAME == "html": | |
| md.renderer.register("subscript", render_subscript) | |