aboutsummaryrefslogtreecommitdiff
path: root/Utils.py
diff options
context:
space:
mode:
authorGravatar jesopo2018-09-11 08:52:12 +0100
committerGravatar jesopo2018-09-11 08:52:12 +0100
commit6c8399fa0fdcc42516cf72c0cfe78791b2ae93c7 (patch)
treea4c1809e92fd80086a2fce51e0a0dce91b81f70c /Utils.py
parentPass 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.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/Utils.py b/Utils.py
index 0aa407d4..ac39825c 100644
--- a/Utils.py
+++ b/Utils.py
@@ -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