diff options
| author | 2018-09-11 08:52:12 +0100 | |
|---|---|---|
| committer | 2018-09-11 08:52:12 +0100 | |
| commit | 6c8399fa0fdcc42516cf72c0cfe78791b2ae93c7 (patch) | |
| tree | a4c1809e92fd80086a2fce51e0a0dce91b81f70c /Utils.py | |
| parent | Pass around an IRCPrefix object instead of "nickname!username@hostname", fix a (diff) | |
| signature | ||
Respect RFC1459 casemapping rules
Diffstat (limited to 'Utils.py')
| -rw-r--r-- | Utils.py | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -1,10 +1,14 @@ import json, re, traceback, urllib.request, urllib.parse, urllib.error, ssl +import string import bs4 USER_AGENT = ("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 " "(KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36") REGEX_HTTP = re.compile("https?://", re.I) +RFC1459_UPPER = r'\[]~' +RFC1459_UPPER = r'|{}^' + def remove_colon(s): if s.startswith(":"): s = s[1:] @@ -13,6 +17,21 @@ def remove_colon(s): def arbitrary(s, n): return remove_colon(" ".join(s[n:])) +def _rfc1459_lower(s): + for upper, lower in zip(RFC1459_UPPER, RFC1459_LOWER): + s = s.replace(upper, lower) + return s.lower() +def irc_lower(server, s): + if server.case_mapping == "ascii": + return s.lower() + elif server.case_mapping == "rfc1459": + return _rfc1459_lower(s) + else: + raise ValueError("unknown casemapping '%s'" % server.case_mapping) + +def irc_equals(server, s1, s2): + return irc_lower(server, s1) == irc_lower(server, s2) + class IRCHostmask(object): def __init__(self, nickname, username, hostname, hostmask): self.nickname = nickname |
