Self -> MaskSelf, add Self for param

This commit is contained in:
jesopo 2020-04-28 01:39:07 +01:00
parent 6b2b3d71c8
commit 20290807d9
2 changed files with 16 additions and 9 deletions

View file

@ -56,12 +56,19 @@ class Regex(IMatchResponseParam):
self._pattern = re_compile(self._value) self._pattern = re_compile(self._value)
return bool(self._pattern.search(arg)) return bool(self._pattern.search(arg))
class Self(IMatchResponseHostmask): class Self(IMatchResponseParam):
def __repr__(self) -> str: def __repr__(self) -> str:
return "Self()" return "Self()"
def match(self, server: IServer, arg: str) -> bool:
return server.casefold(arg) == server.nickname_lower
SELF = Self()
class MaskSelf(IMatchResponseHostmask):
def __repr__(self) -> str:
return "MaskSelf()"
def match(self, server: IServer, hostmask: Hostmask): def match(self, server: IServer, hostmask: Hostmask):
return server.casefold(hostmask.nickname) == server.nickname_lower return server.casefold(hostmask.nickname) == server.nickname_lower
SELF = Self() MASK_SELF = MaskSelf()
class Nick(IMatchResponseHostmask): class Nick(IMatchResponseHostmask):
def __init__(self, nickname: str): def __init__(self, nickname: str):

View file

@ -16,7 +16,8 @@ from .ircv3 import (CAPContext, sts_transmute, CAP_ECHO, CAP_SASL,
CAP_LABEL, LABEL_TAG, resume_transmute) CAP_LABEL, LABEL_TAG, resume_transmute)
from .sasl import SASLContext, SASLResult from .sasl import SASLContext, SASLResult
from .join_info import WHOContext from .join_info import WHOContext
from .matching import ResponseOr, Responses, Response, ANY, SELF, Folded from .matching import (ResponseOr, Responses, Response, ANY, SELF, MASK_SELF,
Folded)
from .asyncs import MaybeAwait, WaitFor from .asyncs import MaybeAwait, WaitFor
from .struct import Whois from .struct import Whois
from .params import ConnectionParams, SASLParams, STSPolicy, ResumePolicy from .params import ConnectionParams, SASLParams, STSPolicy, ResumePolicy
@ -300,7 +301,7 @@ class Server(IServer):
async def _assure() -> bool: async def _assure() -> bool:
await fut await fut
line = await self.wait_for({ line = await self.wait_for({
Response("NICK", [Folded(new_nick)], source=SELF), Response("NICK", [Folded(new_nick)], source=MASK_SELF),
Responses([ Responses([
ERR_BANNICKCHANGE, ERR_BANNICKCHANGE,
ERR_NICKTOOFAST, ERR_NICKTOOFAST,
@ -329,11 +330,10 @@ class Server(IServer):
fut = self.send(build("PART", [name])) fut = self.send(build("PART", [name]))
async def _assure(): async def _assure():
line = await self.wait_for(Response( await fut
"PART", line = await self.wait_for(
[ParamFolded(name)], Response("PART", [Folded(name)], source=MASK_SELF)
source=SELF )
))
return return
return MaybeAwait(_assure) return MaybeAwait(_assure)