[util] add 're' helper
This commit is contained in:
@@ -32,6 +32,19 @@ try:
|
||||
except AttributeError:
|
||||
re_compile = re.sre_compile.compile
|
||||
|
||||
CACHE_PATTERN = {}
|
||||
|
||||
|
||||
def re(pattern):
|
||||
"""Compile a regular expression pattern"""
|
||||
try:
|
||||
return CACHE_PATTERN[pattern]
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
p = CACHE_PATTERN[pattern] = re_compile(pattern)
|
||||
return p
|
||||
|
||||
|
||||
def bencode(num, alphabet="0123456789"):
|
||||
"""Encode an integer into a base-N encoded string"""
|
||||
@@ -360,9 +373,8 @@ Response Headers
|
||||
|
||||
set_cookie = res_headers.get("Set-Cookie")
|
||||
if set_cookie:
|
||||
res_headers["Set-Cookie"] = re.sub(
|
||||
r"(^|, )([^ =]+)=[^,;]*", r"\1\2=***", set_cookie,
|
||||
)
|
||||
res_headers["Set-Cookie"] = re(r"(^|, )([^ =]+)=[^,;]*").sub(
|
||||
r"\1\2=***", set_cookie)
|
||||
|
||||
fmt_nv = "{}: {}".format
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import sys
|
||||
import unittest
|
||||
|
||||
import io
|
||||
import re
|
||||
import time
|
||||
import random
|
||||
import string
|
||||
@@ -974,6 +975,25 @@ value = 123
|
||||
self.assertEqual(response.headers.get("foo"), None)
|
||||
self.assertEqual(response.links.get("next"), None)
|
||||
|
||||
def test_re(self):
|
||||
Pattern = type(re.compile(""))
|
||||
|
||||
p1 = util.re_compile("foo")
|
||||
p2 = util.re("foo")
|
||||
p3 = util.re("foo")
|
||||
|
||||
self.assertIsInstance(p1, Pattern)
|
||||
self.assertIsInstance(p2, Pattern)
|
||||
self.assertIsInstance(p3, Pattern)
|
||||
|
||||
self.assertIsNot(p1, p2)
|
||||
self.assertIs(p2, p3)
|
||||
|
||||
if sys.hexversion >= 0x3060000:
|
||||
self.assertEqual(p1, p2)
|
||||
else:
|
||||
self.assertEqual(repr(p1), repr(p2))
|
||||
|
||||
|
||||
class TestExtractor():
|
||||
category = "test_category"
|
||||
|
||||
Reference in New Issue
Block a user