示例#1
0
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
示例#2
0
    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
示例#3
0
    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
示例#4
0
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
示例#5
0
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