Refs #32319 -- Changed HashedFilesMixin to use named groups in patterns.

This commit is contained in:
Gildardo Adrian Maravilla Jacome 2021-05-31 09:05:36 +02:00 committed by Mariusz Felisiak
parent d270dd584e
commit 781b44240a
2 changed files with 19 additions and 7 deletions

View File

@ -42,15 +42,21 @@ class StaticFilesStorage(FileSystemStorage):
class HashedFilesMixin:
default_template = """url("%s")"""
default_template = """url("%(url)s")"""
max_post_process_passes = 5
patterns = (
("*.css", (
r"""(url\(['"]{0,1}\s*(.*?)["']{0,1}\))""",
(r"""(@import\s*["']\s*(.*?)["'])""", """@import url("%s")"""),
r"""(?P<matched>url\(['"]{0,1}\s*(?P<url>.*?)["']{0,1}\))""",
(
r"""(?P<matched>@import\s*["']\s*(?P<url>.*?)["'])""",
"""@import url("%(url)s")""",
),
)),
('*.js', (
(r'(?m)^(//# (?-i:sourceMappingURL)=(.*))$', '//# sourceMappingURL=%s'),
(
r'(?P<matched>)^(//# (?-i:sourceMappingURL)=(?P<url>.*))$',
'//# sourceMappingURL=%(url)s',
),
)),
)
keep_intermediate_files = True
@ -163,7 +169,9 @@ class HashedFilesMixin:
This requires figuring out which files the matched URL resolves
to and calling the url() method of the storage.
"""
matched, url = matchobj.groups()
matches = matchobj.groupdict()
matched = matches['matched']
url = matches['url']
# Ignore absolute/protocol-relative and data-uri URLs.
if re.match(r'^[a-z]+:', url):
@ -199,7 +207,8 @@ class HashedFilesMixin:
transformed_url += ('?#' if '?#' in url else '#') + fragment
# Return the hashed version to the file
return template % unquote(transformed_url)
matches['url'] = unquote(transformed_url)
return template % matches
return converter

View File

@ -84,7 +84,10 @@ class ExtraPatternsStorage(ManifestStaticFilesStorage):
patterns = tuple(ManifestStaticFilesStorage.patterns) + (
(
"*.js", (
(r"""(url\(['"]{0,1}\s*(.*?)["']{0,1}\))""", 'JS_URL("%s")'),
(
r"""(?P<matched>url\(['"]{0,1}\s*(?P<url>.*?)["']{0,1}\))""",
'JS_URL("%(url)s")',
),
),
),
)