toks += [':[']
toks += [f':{update.value.sender}' if update.value.sender
else 'NICK:me']
- toks += [f':] {update.value.content}']
+ toks += [f':] {update.value.content}']
update.results += [(_LogScope.CHAT, toks)]
ret.sort(key=lambda w: w.idx)
return ret
- def log(self, msg: str, scope: _LogScope, **kwargs) -> None:
+ def log(self,
+ msg: str,
+ scope: _LogScope,
+ alert=False,
+ target='',
+ out: Optional[bool] = None
+ ) -> None:
'From parsing scope, kwargs, build prefix before sending to logger.'
prefix = '$'
- if 'out' in kwargs:
- prefix = _LOG_PREFIX_OUT if kwargs['out'] else _LOG_PREFIX_IN
- kw = {k: v for k, v in kwargs.items() if k in {'log_target', 'alert'}}
- self._tui_log(msg, scope=scope, prefix=prefix, **kw)
+ if out is not None:
+ prefix = _LOG_PREFIX_OUT if out else _LOG_PREFIX_IN
+ kwargs = {'alert': True} if alert else {}
+ kwargs |= {'target': target} if target else {}
+ self._tui_log(msg, scope=scope, prefix=prefix, **kwargs)
def update_db(self, update: _Update) -> bool:
'Apply update to .db, and if changing anything, log and trigger.'
nuh = self.db.users[content]
content = str(nuh) if transform == 'NUH' else nuh.nick
msg += content
- log_kwargs: dict[str, str | bool] = {}
+ out: Optional[bool] = None
+ target = ''
if update.full_path == ('message',):
- log_kwargs['log_target'] = (update.value.target
- or update.value.sender)
- log_kwargs['out'] = not bool(update.value.sender)
+ target = update.value.target or update.value.sender
+ out = not bool(update.value.sender)
elif scope in {_LogScope.CHAT, _LogScope.USER,
_LogScope.USER_NO_CHANNELS}:
- log_kwargs['log_target'] = update.full_path[1]
- self.log(msg, scope=scope, **log_kwargs)
+ target = update.full_path[1]
+ self.log(msg, scope=scope, target=target, out=out)
for win in [w for w in self.windows if isinstance(w, _ChatWindow)]:
win.set_prompt_prefix()
return bool([w for w in self.windows if w.tainted])
def _log_target_wins(self, **kwargs) -> Sequence[Window]:
if (scope := kwargs.get('scope', None)):
return self._client_mngrs[kwargs['client_id']].windows_for(
- scope, kwargs.get('log_target', ''))
+ scope, kwargs.get('target', ''))
return super()._log_target_wins(**kwargs)
def log(self, msg: str, **kwargs) -> tuple[tuple[int, ...], str]:
except TargetUserOffline as e:
name = f'{e}'
self._log(f'{name} not online', scope=_LogScope.CHAT,
- log_target=name, alert=True)
+ target=name, alert=True)
def _alert(self, msg: str) -> None:
self._log(msg, scope=_LogScope.DEBUG, alert=True)
- def _log(self, msg: str, scope: _LogScope, **kwargs) -> None:
- self._client_tui_trigger('log', scope=scope, msg=msg, **kwargs)
+ def _log(self,
+ msg: str,
+ scope: _LogScope,
+ alert=False,
+ target='',
+ out: Optional[bool] = None
+ ) -> None:
+ self._client_tui_trigger('log', scope=scope, msg=msg, alert=alert,
+ target=target, out=out)
def _on_update(self, *path) -> None:
for path, value in self.db.into_endnode_updates(path):