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

View File

@ -84,7 +84,10 @@ class ExtraPatternsStorage(ManifestStaticFilesStorage):
patterns = tuple(ManifestStaticFilesStorage.patterns) + ( patterns = tuple(ManifestStaticFilesStorage.patterns) + (
( (
"*.js", ( "*.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")',
),
), ),
), ),
) )