From 7d1b0ec7a15644d593cb3749de4636a4b664b5d1 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Mon, 22 Feb 2016 14:52:01 +0900 Subject: [PATCH 1/6] Refactor tests: Add @skip_if_graphviz_not_found decorator --- tests/test_ext_graphviz.py | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/tests/test_ext_graphviz.py b/tests/test_ext_graphviz.py index 95b7f5042..77283e9ea 100644 --- a/tests/test_ext_graphviz.py +++ b/tests/test_ext_graphviz.py @@ -10,15 +10,39 @@ """ import re +import subprocess +from functools import wraps from util import with_app, SkipTest +def skip_if_graphviz_not_found(fn): + @wraps(fn) + def decorator(app, *args, **kwargs): + found = False + graphviz_dot = getattr(app.config, 'graphviz_dot', '') + try: + if graphviz_dot: + dot = subprocess.Popen([graphviz_dot, '-V'], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) # show version + dot.wait() + found = True + except OSError: # No such file or directory + pass + + if not found: + raise SkipTest('graphviz "dot" is not available') + + return fn(app, *args, **kwargs) + + return decorator + + @with_app('html', testroot='ext-graphviz') +@skip_if_graphviz_not_found def test_graphviz_html(app, status, warning): app.builder.build_all() - if "dot command 'dot' cannot be run" in warning.getvalue(): - raise SkipTest('graphviz "dot" is not available') content = (app.outdir / 'index.html').text() html = ('
\s*\s*

' @@ -30,10 +54,9 @@ def test_graphviz_html(app, status, warning): @with_app('latex', testroot='ext-graphviz') +@skip_if_graphviz_not_found def test_graphviz_latex(app, status, warning): app.builder.build_all() - if "dot command 'dot' cannot be run" in warning.getvalue(): - raise SkipTest('graphviz "dot" is not available') content = (app.outdir / 'SphinxTests.tex').text() macro = ('\\\\begin{figure}\[htbp\]\n\\\\centering\n\\\\capstart\n\n' From 208eb6e05293e1bbe0aeaeeb00327aad2610eaac Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Tue, 9 Feb 2016 23:56:37 +0900 Subject: [PATCH 2/6] Refactor: guess_mimetype() --- sphinx/environment.py | 25 ++++++++----------------- sphinx/util/images.py | 20 ++++++++++++++++++++ 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/sphinx/environment.py b/sphinx/environment.py index 0db34f506..cc201186a 100644 --- a/sphinx/environment.py +++ b/sphinx/environment.py @@ -16,7 +16,6 @@ import time import types import bisect import codecs -import imghdr import string import unicodedata from os import path @@ -41,6 +40,7 @@ from sphinx.util import url_re, get_matching_docs, docname_join, split_into, \ from sphinx.util.nodes import clean_astext, make_refnode, WarningStream, is_translatable from sphinx.util.osutil import SEP, getcwd, fs_encoding, ensuredir from sphinx.util.i18n import find_catalog_files +from sphinx.util.images import guess_mimetype from sphinx.util.console import bold, purple from sphinx.util.matching import compile_matchers from sphinx.util.parallel import ParallelTasks, parallel_available, make_chunks @@ -902,24 +902,15 @@ class BuildEnvironment: for filename in glob(full_imgpath): new_imgpath = relative_path(path.join(self.srcdir, 'dummy'), filename) - if filename.lower().endswith('.pdf'): - candidates['application/pdf'] = new_imgpath - elif filename.lower().endswith('.svg'): - candidates['image/svg+xml'] = new_imgpath - else: - try: - f = open(filename, 'rb') - try: - imgtype = imghdr.what(f) - finally: - f.close() - except (OSError, IOError) as err: - self.warn_node('image file %s not readable: %s' % - (filename, err), node) - if imgtype: - candidates['image/' + imgtype] = new_imgpath + try: + mimetype = guess_mimetype(filename) + candidates[mimetype] = new_imgpath + except (OSError, IOError) as err: + self.warn_node('image file %s not readable: %s' % + (filename, err), node) else: candidates['*'] = rel_imgpath + # map image paths to unique image names (so that they can be put # into a single directory) for imgpath in itervalues(candidates): diff --git a/sphinx/util/images.py b/sphinx/util/images.py index 931be3d15..143042a58 100644 --- a/sphinx/util/images.py +++ b/sphinx/util/images.py @@ -9,7 +9,9 @@ :license: BSD, see LICENSE for details. """ +import imghdr import imagesize +from os import path try: from PIL import Image # check for the Python Imaging Library @@ -19,6 +21,11 @@ except ImportError: except ImportError: Image = None +mime_suffixes = { + '.pdf': 'application/pdf', + '.svg': 'image/svg+xml', +} + def get_image_size(filename): try: @@ -37,3 +44,16 @@ def get_image_size(filename): return size except: return None + + +def guess_mimetype(filename): + _, ext = path.splitext(filename) + if ext in mime_suffixes: + return mime_suffixes[ext] + else: + with open(filename, 'rb') as f: + imgtype = imghdr.what(f) + if imgtype: + return 'image/' + imgtype + + return None From 46138ca605af795062946e8fe2a67b5720b377e2 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 28 Jan 2016 00:39:04 +0900 Subject: [PATCH 3/6] Select an image by similarity if multiple images are globbed by ``.. image:: filename.*`` Until this point, it is used the last image returned from glob.glob(). The order of glob.glob() is determined by filesystem. After this, Sphinx uses filename similarity to determine the image. --- CHANGES | 1 + sphinx/environment.py | 5 ++++- tests/roots/test-image-glob/img.ja.png | Bin 0 -> 67765 bytes tests/roots/test-image-glob/img.zh.png | Bin 0 -> 67765 bytes 4 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 tests/roots/test-image-glob/img.ja.png create mode 100644 tests/roots/test-image-glob/img.zh.png diff --git a/CHANGES b/CHANGES index 81f136edc..ee0234561 100644 --- a/CHANGES +++ b/CHANGES @@ -105,6 +105,7 @@ Features added * #1853: support custom text splitter on html search with ``language='ja'``. * #2320: classifier of glossary terms can be used for index entries grouping key. The classifier also be used for translation. See also :ref:`glossary-directive`. +* Select an image by similarity if multiple images are globbed by ``.. image:: filename.*`` Bugs fixed ---------- diff --git a/sphinx/environment.py b/sphinx/environment.py index cc201186a..42bfef931 100644 --- a/sphinx/environment.py +++ b/sphinx/environment.py @@ -899,15 +899,18 @@ class BuildEnvironment: # set imgpath as default URI node['uri'] = rel_imgpath if rel_imgpath.endswith(os.extsep + '*'): + globbed = {} for filename in glob(full_imgpath): new_imgpath = relative_path(path.join(self.srcdir, 'dummy'), filename) try: mimetype = guess_mimetype(filename) - candidates[mimetype] = new_imgpath + globbed.setdefault(mimetype, []).append(new_imgpath) except (OSError, IOError) as err: self.warn_node('image file %s not readable: %s' % (filename, err), node) + for key, files in iteritems(globbed): + candidates[key] = sorted(files, key=len)[0] # select by similarity else: candidates['*'] = rel_imgpath diff --git a/tests/roots/test-image-glob/img.ja.png b/tests/roots/test-image-glob/img.ja.png new file mode 100644 index 0000000000000000000000000000000000000000..4c8f89929f2483a249c42ec5358016b9f1073f47 GIT binary patch literal 67765 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 Date: Wed, 27 Jan 2016 01:36:43 +0900 Subject: [PATCH 4/6] Fix #1921: Support figure substitutions by locale --- CHANGES | 1 + doc/config.rst | 12 +- sphinx/environment.py | 44 +++-- sphinx/util/i18n.py | 25 +++ tests/roots/test-image-glob/rimg.xx.png | Bin 0 -> 218 bytes tests/roots/test-image-glob/subdir/index.rst | 2 + tests/roots/test-image-glob/subdir/rimg.png | Bin 0 -> 218 bytes .../roots/test-image-glob/subdir/rimg.xx.png | Bin 0 -> 218 bytes .../test-image-glob/subdir/svgimg.xx.svg | 158 ++++++++++++++++++ tests/test_build.py | 20 ++- tests/test_intl.py | 47 +++++- tests/test_util_i18n.py | 33 +++- tests/util.py | 10 ++ 13 files changed, 325 insertions(+), 27 deletions(-) create mode 100644 tests/roots/test-image-glob/rimg.xx.png create mode 100644 tests/roots/test-image-glob/subdir/rimg.png create mode 100644 tests/roots/test-image-glob/subdir/rimg.xx.png create mode 100644 tests/roots/test-image-glob/subdir/svgimg.xx.svg diff --git a/CHANGES b/CHANGES index ee0234561..117a7bc63 100644 --- a/CHANGES +++ b/CHANGES @@ -106,6 +106,7 @@ Features added * #2320: classifier of glossary terms can be used for index entries grouping key. The classifier also be used for translation. See also :ref:`glossary-directive`. * Select an image by similarity if multiple images are globbed by ``.. image:: filename.*`` +* #1921: Support figure substitutions by :confval:`language` Bugs fixed ---------- diff --git a/doc/config.rst b/doc/config.rst index 9ac9b17d4..99ca15f02 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -417,12 +417,18 @@ documentation on :ref:`intl` for details. The code for the language the docs are written in. Any text automatically generated by Sphinx will be in that language. Also, Sphinx will try to substitute individual paragraphs from your documents with the translation - sets obtained from :confval:`locale_dirs`. In the LaTeX builder, a suitable - language will be selected as an option for the *Babel* package. Default is - ``None``, which means that no translation will be done. + sets obtained from :confval:`locale_dirs`. Sphinx will search + language-specific figures named by `figure_language_filename` and substitute + them for original figures. In the LaTeX builder, a suitable language will + be selected as an option for the *Babel* package. Default is ``None``, + which means that no translation will be done. .. versionadded:: 0.5 + .. versionchanged:: 1.4 + + Support figure substitution + Currently supported languages by Sphinx are: * ``bn`` -- Bengali diff --git a/sphinx/environment.py b/sphinx/environment.py index 42bfef931..b8b40b8e6 100644 --- a/sphinx/environment.py +++ b/sphinx/environment.py @@ -39,8 +39,9 @@ from sphinx.util import url_re, get_matching_docs, docname_join, split_into, \ FilenameUniqDict, split_index_msg from sphinx.util.nodes import clean_astext, make_refnode, WarningStream, is_translatable from sphinx.util.osutil import SEP, getcwd, fs_encoding, ensuredir -from sphinx.util.i18n import find_catalog_files from sphinx.util.images import guess_mimetype +from sphinx.util.i18n import find_catalog_files, get_image_filename_for_language, \ + search_image_for_language from sphinx.util.console import bold, purple from sphinx.util.matching import compile_matchers from sphinx.util.parallel import ParallelTasks, parallel_available, make_chunks @@ -884,6 +885,21 @@ class BuildEnvironment: def process_images(self, docname, doctree): """Process and rewrite image URIs.""" + def collect_candidates(imgpath, candidates): + globbed = {} + for filename in glob(imgpath): + new_imgpath = relative_path(path.join(self.srcdir, 'dummy'), + filename) + try: + mimetype = guess_mimetype(filename) + if mimetype not in candidates: + globbed.setdefault(mimetype, []).append(new_imgpath) + except (OSError, IOError) as err: + self.warn_node('image file %s not readable: %s' % + (filename, err), node) + for key, files in iteritems(globbed): + candidates[key] = sorted(files, key=len)[0] # select by similarity + for node in doctree.traverse(nodes.image): # Map the mimetype to the corresponding image. The writer may # choose the best image from these candidates. The special key * is @@ -896,21 +912,23 @@ class BuildEnvironment: candidates['?'] = imguri continue rel_imgpath, full_imgpath = self.relfn2path(imguri, docname) + if self.config.language: + # substitute figures (ex. foo.png -> foo.en.png) + i18n_full_imgpath = search_image_for_language(full_imgpath, self) + if i18n_full_imgpath != full_imgpath: + full_imgpath = i18n_full_imgpath + rel_imgpath = relative_path(path.join(self.srcdir, 'dummy'), + i18n_full_imgpath) # set imgpath as default URI node['uri'] = rel_imgpath if rel_imgpath.endswith(os.extsep + '*'): - globbed = {} - for filename in glob(full_imgpath): - new_imgpath = relative_path(path.join(self.srcdir, 'dummy'), - filename) - try: - mimetype = guess_mimetype(filename) - globbed.setdefault(mimetype, []).append(new_imgpath) - except (OSError, IOError) as err: - self.warn_node('image file %s not readable: %s' % - (filename, err), node) - for key, files in iteritems(globbed): - candidates[key] = sorted(files, key=len)[0] # select by similarity + if self.config.language: + # Search language-specific figures at first + i18n_imguri = get_image_filename_for_language(imguri, self) + _, full_i18n_imgpath = self.relfn2path(i18n_imguri, docname) + collect_candidates(full_i18n_imgpath, candidates) + + collect_candidates(full_imgpath, candidates) else: candidates['*'] = rel_imgpath diff --git a/sphinx/util/i18n.py b/sphinx/util/i18n.py index 32ebee943..28170c385 100644 --- a/sphinx/util/i18n.py +++ b/sphinx/util/i18n.py @@ -22,6 +22,7 @@ import babel.dates from babel.messages.pofile import read_po from babel.messages.mofile import write_mo +from sphinx.errors import SphinxError from sphinx.util.osutil import walk from sphinx.util import SEP @@ -190,3 +191,27 @@ def format_date(format, date=None, language=None): result.append(token) return "".join(result) + + +def get_image_filename_for_language(filename, env): + if not env.config.language: + return filename + + root, ext = path.splitext(filename) + try: + return "{root}.{language}{ext}".format(root=root, ext=ext, + language=env.config.language) + except KeyError as exc: + raise SphinxError('Invalid figure_language_filename: %r' % exc) + + +def search_image_for_language(filename, env): + if not env.config.language: + return filename + + translated = get_image_filename_for_language(filename, env) + dirname = path.dirname(env.docname) + if path.exists(path.join(env.srcdir, dirname, translated)): + return translated + else: + return filename diff --git a/tests/roots/test-image-glob/rimg.xx.png b/tests/roots/test-image-glob/rimg.xx.png new file mode 100644 index 0000000000000000000000000000000000000000..1081dc1439fb984dfa7ef627afe3c7dc476fdbce GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI|!3HFkf4uMuBv2gW?!>U}oXkrghqJ&VvY3H^ zTNs2H8D`Cq01C2~c>21s-(chw7$R|bZ|_0D0|q>YSbqDzW^|HYIk%*-&O)*U}oXkrghqJ&VvY3H^ zTNs2H8D`Cq01C2~c>21s-(chw7$R|bZ|_0D0|q>YSbqDzW^|HYIk%*-&O)*U}oXkrghqJ&VvY3H^ zTNs2H8D`Cq01C2~c>21s-(chw7$R|bZ|_0D0|q>YSbqDzW^|HYIk%*-&O)* + + + + + + + + + + + + + Part of the Flat Icon Collection (Thu Aug 26 14:31:40 2004) + + + +

  • + + + + + + </Agent> + </publisher> + <creator + id="creator24"> + <Agent + about="" + id="Agent25"> + <title + id="title26">Danny Allen + + + + + Danny Allen + + + + image/svg+xml + + + + + en + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/tests/test_build.py b/tests/test_build.py index ee6534b7d..1c0d55e1b 100644 --- a/tests/test_build.py +++ b/tests/test_build.py @@ -112,7 +112,7 @@ def test_numbered_circular_toctree(app, status, warning): 'contents <- sub <- contents') in warnings -@with_app(buildername='html', testroot='image-glob') +@with_app(buildername='dummy', testroot='image-glob') def test_image_glob(app, status, warning): app.builder.build_all() @@ -145,12 +145,16 @@ def test_image_glob(app, status, warning): doctree = pickle.loads((app.doctreedir / 'subdir/index.doctree').bytes()) assert isinstance(doctree[0][1], nodes.image) - assert doctree[0][1]['candidates'] == {'application/pdf': 'subdir/svgimg.pdf', - 'image/svg+xml': 'subdir/svgimg.svg'} - assert doctree[0][1]['uri'] == 'subdir/svgimg.*' + assert doctree[0][1]['candidates'] == {'*': 'subdir/rimg.png'} + assert doctree[0][1]['uri'] == 'subdir/rimg.png' - assert isinstance(doctree[0][2], nodes.figure) - assert isinstance(doctree[0][2][0], nodes.image) - assert doctree[0][2][0]['candidates'] == {'application/pdf': 'subdir/svgimg.pdf', + assert isinstance(doctree[0][2], nodes.image) + assert doctree[0][2]['candidates'] == {'application/pdf': 'subdir/svgimg.pdf', + 'image/svg+xml': 'subdir/svgimg.svg'} + assert doctree[0][2]['uri'] == 'subdir/svgimg.*' + + assert isinstance(doctree[0][3], nodes.figure) + assert isinstance(doctree[0][3][0], nodes.image) + assert doctree[0][3][0]['candidates'] == {'application/pdf': 'subdir/svgimg.pdf', 'image/svg+xml': 'subdir/svgimg.svg'} - assert doctree[0][2][0]['uri'] == 'subdir/svgimg.*' + assert doctree[0][3][0]['uri'] == 'subdir/svgimg.*' diff --git a/tests/test_intl.py b/tests/test_intl.py index b24ec65d2..61079b20e 100644 --- a/tests/test_intl.py +++ b/tests/test_intl.py @@ -13,6 +13,8 @@ from __future__ import print_function import os import re +import pickle +from docutils import nodes from subprocess import Popen, PIPE from xml.etree import ElementTree @@ -20,9 +22,9 @@ from babel.messages import pofile from nose.tools import assert_equal from six import string_types -from util import tempdir, rootdir, path, gen_with_app, SkipTest, \ +from util import tempdir, rootdir, path, gen_with_app, with_app, SkipTest, \ assert_re_search, assert_not_re_search, assert_in, assert_not_in, \ - assert_startswith + assert_startswith, assert_node root = tempdir / 'test-intl' @@ -794,3 +796,44 @@ def test_references(app, status, warning): warnings = warning.getvalue().replace(os.sep, '/') warning_expr = u'refs.txt:\\d+: ERROR: Unknown target name:' yield assert_count(warning_expr, warnings, 0) + + +@with_app(buildername='dummy', testroot='image-glob', confoverrides={'language': 'xx'}) +def test_image_glob_intl(app, status, warning): + app.builder.build_all() + + # index.rst + doctree = pickle.loads((app.doctreedir / 'index.doctree').bytes()) + + assert_node(doctree[0][1], nodes.image, uri='rimg.xx.png', + candidates={'*': 'rimg.xx.png'}) + + assert isinstance(doctree[0][2], nodes.figure) + assert_node(doctree[0][2][0], nodes.image, uri='rimg.xx.png', + candidates={'*': 'rimg.xx.png'}) + + assert_node(doctree[0][3], nodes.image, uri='img.*', + candidates={'application/pdf': 'img.pdf', + 'image/gif': 'img.gif', + 'image/png': 'img.png'}) + + assert isinstance(doctree[0][4], nodes.figure) + assert_node(doctree[0][4][0], nodes.image, uri='img.*', + candidates={'application/pdf': 'img.pdf', + 'image/gif': 'img.gif', + 'image/png': 'img.png'}) + + # subdir/index.rst + doctree = pickle.loads((app.doctreedir / 'subdir/index.doctree').bytes()) + + assert_node(doctree[0][1], nodes.image, uri='subdir/rimg.xx.png', + candidates={'*': 'subdir/rimg.xx.png'}) + + assert_node(doctree[0][2], nodes.image, uri='subdir/svgimg.*', + candidates={'application/pdf': 'subdir/svgimg.pdf', + 'image/svg+xml': 'subdir/svgimg.xx.svg'}) + + assert isinstance(doctree[0][3], nodes.figure) + assert_node(doctree[0][3][0], nodes.image, uri='subdir/svgimg.*', + candidates={'application/pdf': 'subdir/svgimg.pdf', + 'image/svg+xml': 'subdir/svgimg.xx.svg'}) diff --git a/tests/test_util_i18n.py b/tests/test_util_i18n.py index de7cf2ca7..01eb48c38 100644 --- a/tests/test_util_i18n.py +++ b/tests/test_util_i18n.py @@ -16,8 +16,9 @@ from os import path from babel.messages.mofile import read_mo from sphinx.util import i18n +from sphinx.errors import SphinxError -from util import with_tempdir +from util import TestApp, with_tempdir, raises def test_catalog_info_for_file_and_path(): @@ -183,3 +184,33 @@ def test_format_date(): assert i18n.format_date(format, date=date, language='en') == 'February 07, 2016' assert i18n.format_date(format, date=date, language='ja') == u'2月 07, 2016' assert i18n.format_date(format, date=date, language='de') == 'Februar 07, 2016' + + +def test_get_filename_for_language(): + app = TestApp() + + # language is None + app.env.config.language = None + assert app.env.config.language is None + assert i18n.get_image_filename_for_language('foo.png', app.env) == 'foo.png' + assert i18n.get_image_filename_for_language('foo.bar.png', app.env) == 'foo.bar.png' + assert i18n.get_image_filename_for_language('subdir/foo.png', app.env) == 'subdir/foo.png' + assert i18n.get_image_filename_for_language('../foo.png', app.env) == '../foo.png' + assert i18n.get_image_filename_for_language('foo', app.env) == 'foo' + + # language is en + app.env.config.language = 'en' + assert i18n.get_image_filename_for_language('foo.png', app.env) == 'foo.en.png' + assert i18n.get_image_filename_for_language('foo.bar.png', app.env) == 'foo.bar.en.png' + assert i18n.get_image_filename_for_language('dir/foo.png', app.env) == 'dir/foo.en.png' + assert i18n.get_image_filename_for_language('../foo.png', app.env) == '../foo.en.png' + assert i18n.get_image_filename_for_language('foo', app.env) == 'foo.en' + + # modify figure_language_filename and language is None + app.env.config.language = None + app.env.config.figure_language_filename = 'images/{language}/{root}{ext}' + assert i18n.get_image_filename_for_language('foo.png', app.env) == 'foo.png' + assert i18n.get_image_filename_for_language('foo.bar.png', app.env) == 'foo.bar.png' + assert i18n.get_image_filename_for_language('subdir/foo.png', app.env) == 'subdir/foo.png' + assert i18n.get_image_filename_for_language('../foo.png', app.env) == '../foo.png' + assert i18n.get_image_filename_for_language('foo', app.env) == 'foo' diff --git a/tests/util.py b/tests/util.py index 1e20e73e2..969c4e5c4 100644 --- a/tests/util.py +++ b/tests/util.py @@ -94,6 +94,16 @@ def assert_startswith(thing, prefix): assert False, '%r does not start with %r' % (thing, prefix) +def assert_node(node, cls=None, **kwargs): + if cls: + assert isinstance(node, cls), '%r is not subclass of %r' % (node, cls) + + for key, value in kwargs.items(): + assert key in node, '%r does not have %r attribute' % (node, key) + assert node[key] == value, \ + '%r[%s]: %r does not equals %r' % (node, key, node[key], value) + + try: from nose.tools import assert_in, assert_not_in except ImportError: From 3f0843bca0a861529fe5711e0e132c1cf8c7d9f1 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Fri, 29 Jan 2016 15:05:43 +0900 Subject: [PATCH 5/6] Add figure_language_filename to customize filename pattern for figure substitutions --- CHANGES | 2 +- doc/config.rst | 8 +++++ sphinx/config.py | 1 + sphinx/util/i18n.py | 5 +-- tests/roots/test-image-glob/rimg.png.xx | Bin 0 -> 218 bytes tests/test_intl.py | 43 ++++++++++++++++++++++++ tests/test_util_i18n.py | 13 +++++++ 7 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 tests/roots/test-image-glob/rimg.png.xx diff --git a/CHANGES b/CHANGES index 117a7bc63..0a61b6bbb 100644 --- a/CHANGES +++ b/CHANGES @@ -106,7 +106,7 @@ Features added * #2320: classifier of glossary terms can be used for index entries grouping key. The classifier also be used for translation. See also :ref:`glossary-directive`. * Select an image by similarity if multiple images are globbed by ``.. image:: filename.*`` -* #1921: Support figure substitutions by :confval:`language` +* #1921: Support figure substitutions by :confval:`language` and :confval:`figure_language_filename` Bugs fixed ---------- diff --git a/doc/config.rst b/doc/config.rst index 99ca15f02..5fcc7cf7d 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -547,6 +547,14 @@ documentation on :ref:`intl` for details. .. versionadded:: 1.3 +.. confval:: figure_language_filename + + The filename format for language-specific figures. The default value is + ``{root}.{language}{ext}``. It will be expanded to + ``dirname/filename.en.png`` from ``.. image:: dirname/filename.png``. + + .. versionadded:: 1.4 + .. _html-options: Options for HTML output diff --git a/sphinx/config.py b/sphinx/config.py index 5b99c6419..ba3dc11b4 100644 --- a/sphinx/config.py +++ b/sphinx/config.py @@ -53,6 +53,7 @@ class Config(object): language = (None, 'env', [str]), locale_dirs = ([], 'env'), + figure_language_filename = ('{root}.{language}{ext}', 'env', [str]), master_doc = ('contents', 'env'), source_suffix = (['.rst'], 'env'), diff --git a/sphinx/util/i18n.py b/sphinx/util/i18n.py index 28170c385..94492ff45 100644 --- a/sphinx/util/i18n.py +++ b/sphinx/util/i18n.py @@ -197,10 +197,11 @@ def get_image_filename_for_language(filename, env): if not env.config.language: return filename + filename_format = env.config.figure_language_filename root, ext = path.splitext(filename) try: - return "{root}.{language}{ext}".format(root=root, ext=ext, - language=env.config.language) + return filename_format.format(root=root, ext=ext, + language=env.config.language) except KeyError as exc: raise SphinxError('Invalid figure_language_filename: %r' % exc) diff --git a/tests/roots/test-image-glob/rimg.png.xx b/tests/roots/test-image-glob/rimg.png.xx new file mode 100644 index 0000000000000000000000000000000000000000..1081dc1439fb984dfa7ef627afe3c7dc476fdbce GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI|!3HFkf4uMuBv2gW?!>U}oXkrghqJ&VvY3H^ zTNs2H8D`Cq01C2~c>21s-(chw7$R|bZ|_0D0|q>YSbqDzW^|HYIk%*-&O)* Date: Thu, 28 Jan 2016 22:12:28 +0900 Subject: [PATCH 6/6] ``sphinx.ext.graphviz`` supports graph substituions by locale --- sphinx/ext/graphviz.py | 4 +++- tests/roots/test-ext-graphviz/graph.dot | 3 +++ tests/roots/test-ext-graphviz/graph.xx.dot | 3 +++ tests/roots/test-ext-graphviz/index.rst | 3 +++ tests/test_ext_graphviz.py | 13 +++++++++++++ 5 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 tests/roots/test-ext-graphviz/graph.dot create mode 100644 tests/roots/test-ext-graphviz/graph.xx.dot diff --git a/sphinx/ext/graphviz.py b/sphinx/ext/graphviz.py index 44a47d5e1..4e06677ca 100644 --- a/sphinx/ext/graphviz.py +++ b/sphinx/ext/graphviz.py @@ -25,6 +25,7 @@ from docutils.statemachine import ViewList import sphinx from sphinx.errors import SphinxError from sphinx.locale import _ +from sphinx.util.i18n import search_image_for_language from sphinx.util.osutil import ensuredir, ENOENT, EPIPE, EINVAL from sphinx.util.compat import Directive @@ -77,7 +78,8 @@ class Graphviz(Directive): 'Graphviz directive cannot have both content and ' 'a filename argument', line=self.lineno)] env = self.state.document.settings.env - rel_filename, filename = env.relfn2path(self.arguments[0]) + argument = search_image_for_language(self.arguments[0], env) + rel_filename, filename = env.relfn2path(argument) env.note_dependency(rel_filename) try: fp = codecs.open(filename, 'r', 'utf-8') diff --git a/tests/roots/test-ext-graphviz/graph.dot b/tests/roots/test-ext-graphviz/graph.dot new file mode 100644 index 000000000..ca5724492 --- /dev/null +++ b/tests/roots/test-ext-graphviz/graph.dot @@ -0,0 +1,3 @@ +digraph { + bar -> baz +} diff --git a/tests/roots/test-ext-graphviz/graph.xx.dot b/tests/roots/test-ext-graphviz/graph.xx.dot new file mode 100644 index 000000000..e5add5c76 --- /dev/null +++ b/tests/roots/test-ext-graphviz/graph.xx.dot @@ -0,0 +1,3 @@ +digraph { + BAR -> BAZ +} diff --git a/tests/roots/test-ext-graphviz/index.rst b/tests/roots/test-ext-graphviz/index.rst index c04ca42a0..b778307e3 100644 --- a/tests/roots/test-ext-graphviz/index.rst +++ b/tests/roots/test-ext-graphviz/index.rst @@ -16,3 +16,6 @@ Hello |graph| graphviz world :graphviz_dot: neato bar -> baz + + +.. graphviz:: graph.dot diff --git a/tests/test_ext_graphviz.py b/tests/test_ext_graphviz.py index 77283e9ea..dbab33761 100644 --- a/tests/test_ext_graphviz.py +++ b/tests/test_ext_graphviz.py @@ -52,6 +52,9 @@ def test_graphviz_html(app, status, warning): html = 'Hello \n graphviz world' assert re.search(html, content, re.S) + html = 'digraph {\n  bar -> baz\n}' + assert re.search(html, content, re.M) + @with_app('latex', testroot='ext-graphviz') @skip_if_graphviz_not_found @@ -66,3 +69,13 @@ def test_graphviz_latex(app, status, warning): macro = 'Hello \\\\includegraphics{graphviz-\w+.pdf} graphviz world' assert re.search(macro, content, re.S) + + +@with_app('html', testroot='ext-graphviz', confoverrides={'language': 'xx'}) +@skip_if_graphviz_not_found +def test_graphviz_i18n(app, status, warning): + app.builder.build_all() + + content = (app.outdir / 'index.html').text() + html = 'digraph {\n  BAR -> BAZ\n}' + assert re.search(html, content, re.M)