| Server IP : 85.214.239.14 / Your IP : 216.73.216.27 Web Server : Apache/2.4.65 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Mon Sep 30 15:36:27 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 8.2.29 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/3/cwd/proc/3/cwd/usr/lib/python3/dist-packages/markdown_it/rules_inline/ |
Upload File : |
# Process autolinks '<protocol:...>'
import re
from .state_inline import StateInline
EMAIL_RE = re.compile(
r"^([a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$" # noqa: E501
)
AUTOLINK_RE = re.compile(r"^([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)$")
def autolink(state: StateInline, silent: bool) -> bool:
pos = state.pos
if state.srcCharCode[pos] != 0x3C: # /* < */
return False
start = state.pos
maximum = state.posMax
while True:
pos += 1
if pos >= maximum:
return False
ch = state.srcCharCode[pos]
if ch == 0x3C: # /* < */
return False
if ch == 0x3E: # /* > */
break
url = state.src[start + 1 : pos]
if AUTOLINK_RE.search(url) is not None:
fullUrl = state.md.normalizeLink(url)
if not state.md.validateLink(fullUrl):
return False
if not silent:
token = state.push("link_open", "a", 1)
token.attrs = {"href": fullUrl}
token.markup = "autolink"
token.info = "auto"
token = state.push("text", "", 0)
token.content = state.md.normalizeLinkText(url)
token = state.push("link_close", "a", -1)
token.markup = "autolink"
token.info = "auto"
state.pos += len(url) + 2
return True
if EMAIL_RE.search(url) is not None:
fullUrl = state.md.normalizeLink("mailto:" + url)
if not state.md.validateLink(fullUrl):
return False
if not silent:
token = state.push("link_open", "a", 1)
token.attrs = {"href": fullUrl}
token.markup = "autolink"
token.info = "auto"
token = state.push("text", "", 0)
token.content = state.md.normalizeLinkText(url)
token = state.push("link_close", "a", -1)
token.markup = "autolink"
token.info = "auto"
state.pos += len(url) + 2
return True
return False