Varia's website
https://varia.zone
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
626 B
28 lines
626 B
1 week ago
|
from __future__ import annotations
|
||
|
|
||
|
from typing import TYPE_CHECKING
|
||
|
|
||
|
if TYPE_CHECKING:
|
||
|
from mdurl._url import URL
|
||
|
|
||
|
|
||
|
def format(url: URL) -> str: # noqa: A001
|
||
|
result = ""
|
||
|
|
||
|
result += url.protocol or ""
|
||
|
result += "//" if url.slashes else ""
|
||
|
result += url.auth + "@" if url.auth else ""
|
||
|
|
||
|
if url.hostname and ":" in url.hostname:
|
||
|
# ipv6 address
|
||
|
result += "[" + url.hostname + "]"
|
||
|
else:
|
||
|
result += url.hostname or ""
|
||
|
|
||
|
result += ":" + url.port if url.port else ""
|
||
|
result += url.pathname or ""
|
||
|
result += url.search or ""
|
||
|
result += url.hash or ""
|
||
|
|
||
|
return result
|