irctokens/irctokens/hostmask.py

31 lines
861 B
Python

from typing import Optional
class Hostmask(object):
def __init__(self, source: str,
nickname: str,
username: Optional[str],
hostname: Optional[str]):
self._source = source
self.nickname = nickname
self.username = username
self.hostname = hostname
def __str__(self) -> str:
return self._source
def __repr__(self) -> str:
return f"Hostmask({self._source})"
def __eq__(self, other) -> bool:
if isinstance(other, Hostmask):
return str(self) == str(other)
else:
return False
def hostmask(source: str) -> Hostmask:
username, _, hostname = source.partition("@")
nickname, _, username = username.partition("!")
return Hostmask(
source,
nickname,
username or None,
hostname or None)