diff options
author | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2020-02-09 15:29:10 +0900 |
---|---|---|
committer | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2020-02-09 15:29:10 +0900 |
commit | a17ad5cd39d130f0c0aac8d72bca61372a609fef (patch) | |
tree | 8f1e79573e20ea584b91854fbb1c9da3bdf2c29e /sphinx/transforms | |
parent | d07985ed859b250eaf0ae96065c300452aa6499b (diff) | |
parent | 41eb2575f1a03fe41666e6af6253a9ced44a86b9 (diff) | |
download | sphinx-git-a17ad5cd39d130f0c0aac8d72bca61372a609fef.tar.gz |
Merge branch '2.3.2' into 2.0
Diffstat (limited to 'sphinx/transforms')
-rw-r--r-- | sphinx/transforms/post_transforms/images.py | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sphinx/transforms/post_transforms/images.py b/sphinx/transforms/post_transforms/images.py index 758e92f0d..d1b513b27 100644 --- a/sphinx/transforms/post_transforms/images.py +++ b/sphinx/transforms/post_transforms/images.py @@ -9,6 +9,7 @@ """ import os +import re from hashlib import sha1 from math import ceil from typing import Any, Dict, List, Tuple @@ -27,6 +28,7 @@ from sphinx.util.osutil import ensuredir, movefile logger = logging.getLogger(__name__) MAX_FILENAME_LEN = 32 +CRITICAL_PATH_CHAR_RE = re.compile('[:;<>|*" ]') class BaseImageConverter(SphinxTransform): @@ -65,6 +67,7 @@ class ImageDownloader(BaseImageConverter): if basename == '' or len(basename) > MAX_FILENAME_LEN: filename, ext = os.path.splitext(node['uri']) basename = sha1(filename.encode()).hexdigest() + ext + basename = re.sub(CRITICAL_PATH_CHAR_RE, "_", basename) dirname = node['uri'].replace('://', '/').translate({ord("?"): "/", ord("&"): "/"}) @@ -146,6 +149,7 @@ class DataURIExtractor(BaseImageConverter): def get_filename_for(filename: str, mimetype: str) -> str: basename = os.path.basename(filename) + basename = re.sub(CRITICAL_PATH_CHAR_RE, "_", basename) return os.path.splitext(basename)[0] + get_image_extension(mimetype) |