summaryrefslogtreecommitdiff
path: root/sphinx/transforms
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2020-02-09 16:21:32 +0900
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2020-02-09 16:21:32 +0900
commit6e0119526a77a2820cf45b7eab3db75a45cb1918 (patch)
treecc3c18ff654440d7f01b14f4c6d40b44e99e4620 /sphinx/transforms
parentf076b6ddf21b20d9eb680c8a502473598a60b6ac (diff)
parentc86e17d4be336286e31e8252b13b9f85d5a7b750 (diff)
downloadsphinx-git-6e0119526a77a2820cf45b7eab3db75a45cb1918.tar.gz
Merge branch '2.0'
Diffstat (limited to 'sphinx/transforms')
-rw-r--r--sphinx/transforms/__init__.py4
-rw-r--r--sphinx/transforms/post_transforms/images.py4
2 files changed, 7 insertions, 1 deletions
diff --git a/sphinx/transforms/__init__.py b/sphinx/transforms/__init__.py
index 922b22e46..a00f04fdf 100644
--- a/sphinx/transforms/__init__.py
+++ b/sphinx/transforms/__init__.py
@@ -173,7 +173,9 @@ class AutoNumbering(SphinxTransform):
domain = self.env.get_domain('std') # type: StandardDomain
for node in self.document.traverse(nodes.Element):
- if domain.is_enumerable_node(node) and domain.get_numfig_title(node) is not None:
+ if (domain.is_enumerable_node(node) and
+ domain.get_numfig_title(node) is not None and
+ node['ids'] == []):
self.document.note_implicit_target(node)
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)