def parse_names_item(item, statuses, has_multi_prefix, has_userhost): """ Parse an entry from /NAMES :param item: The entry to parse :param statuses: Status prefixes on this network :param has_multi_prefix: Whether multi-prefix CAP is enabled :param has_userhost: Whether userhost-in-names CAP is enabled :return: The parsed data """ user_status = [] while item[:1] in statuses: status, item = item[:1], item[1:] user_status.append(statuses[status]) if not has_multi_prefix: # Only remove one status prefix # if we don't have multi prefix enabled break user_status.sort(key=attrgetter("level"), reverse=True) if has_userhost: prefix = Prefix.parse(item) else: prefix = Prefix(item) return prefix.nick, prefix.user, prefix.host, user_status
def test_parse(self, text, nick, user, host): p = Prefix.parse(text) assert p.nick == nick assert p.user == user assert p.ident == user assert p.host == host
def test_parse(self, text, nick, user, host): """Test parsing a string""" p = Prefix.parse(text) assert p.nick == nick assert p.user == user assert p.ident == user assert p.host == host
def test_userhost_split(data): source = Prefix.parse(data['source']) atoms = data['atoms'].copy() assert source.nick == atoms.pop('nick', '') assert source.user == atoms.pop('user', '') assert source.host == atoms.pop('host', '') assert not atoms
def test_userhost_split(data): """Ensure that yser/host parsing passes against the irc-parser-tests data""" source = Prefix.parse(data["source"]) atoms = data["atoms"].copy() assert source.nick == atoms.pop("nick", "") assert source.user == atoms.pop("user", "") assert source.host == atoms.pop("host", "") assert not atoms