| 1234567891011121314151617181920212223242526272829303132 |
- from typing import TYPE_CHECKING, Match
- from ..util import escape_url
- if TYPE_CHECKING:
- from ..core import InlineState
- from ..inline_parser import InlineParser
- from ..markdown import Markdown
- __all__ = ["url"]
- URL_LINK_PATTERN = r"""https?:\/\/[^\s<]+[^<.,:;"')\]\s]"""
- def parse_url_link(inline: "InlineParser", m: Match[str], state: "InlineState") -> int:
- text = m.group(0)
- pos = m.end()
- if state.in_link:
- inline.process_text(text, state)
- return pos
- state.append_token(
- {
- "type": "link",
- "children": [{"type": "text", "raw": text}],
- "attrs": {"url": escape_url(text)},
- }
- )
- return pos
- def url(md: "Markdown") -> None:
- md.inline.register("url_link", URL_LINK_PATTERN, parse_url_link)
|