mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
The `include
` directive now supports absolute paths, which are interpreted as relative to the source directory.
This commit is contained in:
parent
3bd9e4617e
commit
f3c706edae
2
CHANGES
2
CHANGES
@ -51,6 +51,8 @@ Features added
|
|||||||
- #284: All docinfo metadata is now put into the document metadata, not
|
- #284: All docinfo metadata is now put into the document metadata, not
|
||||||
just the author.
|
just the author.
|
||||||
- The ``ref`` role can now also reference tables by caption.
|
- The ``ref`` role can now also reference tables by caption.
|
||||||
|
- The ``include`` directive now supports absolute paths, which are
|
||||||
|
interpreted as relative to the source directory.
|
||||||
|
|
||||||
* Configuration:
|
* Configuration:
|
||||||
|
|
||||||
|
12
doc/rest.rst
12
doc/rest.rst
@ -297,6 +297,8 @@ Docutils supports the following directives:
|
|||||||
|
|
||||||
- :dudir:`raw` (include raw target-format markup)
|
- :dudir:`raw` (include raw target-format markup)
|
||||||
- :dudir:`include` (include reStructuredText from another file)
|
- :dudir:`include` (include reStructuredText from another file)
|
||||||
|
-- in Sphinx, when given an absolute include file path, this directive takes
|
||||||
|
it as relative to the source directory
|
||||||
- :dudir:`class` (assign a class attribute to the next element) [1]_
|
- :dudir:`class` (assign a class attribute to the next element) [1]_
|
||||||
|
|
||||||
* HTML specifics:
|
* HTML specifics:
|
||||||
@ -426,11 +428,11 @@ or this::
|
|||||||
See the :duref:`reST reference for substitutions <substitution-definitions>`
|
See the :duref:`reST reference for substitutions <substitution-definitions>`
|
||||||
for details.
|
for details.
|
||||||
|
|
||||||
If you want to use some substitutions for all documents, put them into a
|
If you want to use some substitutions for all documents, put them into
|
||||||
separate file and include it into all documents you want to use them in, using
|
:confval:`rst_prolog` or put them into a separate file and include it into all
|
||||||
the :rst:dir:`include` directive. Be sure to give the include file a file name
|
documents you want to use them in, using the :rst:dir:`include` directive. (Be
|
||||||
extension differing from that of other source files, to avoid Sphinx finding it
|
sure to give the include file a file name extension differing from that of other
|
||||||
as a standalone document.
|
source files, to avoid Sphinx finding it as a standalone document.)
|
||||||
|
|
||||||
Sphinx defines some default substitutions, see :ref:`default-substitutions`.
|
Sphinx defines some default substitutions, see :ref:`default-substitutions`.
|
||||||
|
|
||||||
|
@ -7,6 +7,8 @@
|
|||||||
:license: BSD, see LICENSE for details.
|
:license: BSD, see LICENSE for details.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
from docutils import nodes
|
from docutils import nodes
|
||||||
from docutils.parsers.rst import Directive, directives
|
from docutils.parsers.rst import Directive, directives
|
||||||
|
|
||||||
@ -367,6 +369,22 @@ class Only(Directive):
|
|||||||
return [node]
|
return [node]
|
||||||
|
|
||||||
|
|
||||||
|
from docutils.parsers.rst.directives.misc import Include as BaseInclude
|
||||||
|
|
||||||
|
class Include(BaseInclude):
|
||||||
|
"""
|
||||||
|
Like the standard "Include" directive, but interprets absolute paths
|
||||||
|
correctly.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
if self.arguments[0].startswith('/') or \
|
||||||
|
self.arguments[0].startswith(os.sep):
|
||||||
|
env = self.state.document.settings.env
|
||||||
|
self.arguments[0] = os.path.join(env.srcdir, self.arguments[0][1:])
|
||||||
|
return BaseInclude.run(self)
|
||||||
|
|
||||||
|
|
||||||
directives.register_directive('toctree', TocTree)
|
directives.register_directive('toctree', TocTree)
|
||||||
directives.register_directive('sectionauthor', Author)
|
directives.register_directive('sectionauthor', Author)
|
||||||
directives.register_directive('moduleauthor', Author)
|
directives.register_directive('moduleauthor', Author)
|
||||||
@ -381,6 +399,7 @@ directives.register_directive('centered', Centered)
|
|||||||
directives.register_directive('acks', Acks)
|
directives.register_directive('acks', Acks)
|
||||||
directives.register_directive('hlist', HList)
|
directives.register_directive('hlist', HList)
|
||||||
directives.register_directive('only', Only)
|
directives.register_directive('only', Only)
|
||||||
|
directives.register_directive('include', Include)
|
||||||
|
|
||||||
# register the standard rst class directive under a different name
|
# register the standard rst class directive under a different name
|
||||||
from docutils.parsers.rst.directives.misc import Class
|
from docutils.parsers.rst.directives.misc import Class
|
||||||
|
@ -10,6 +10,8 @@ Test file and literal inclusion
|
|||||||
|
|
||||||
.. include:: subdir/include.inc
|
.. include:: subdir/include.inc
|
||||||
|
|
||||||
|
.. include:: /subdir/include.inc
|
||||||
|
|
||||||
.. literalinclude:: literal.inc
|
.. literalinclude:: literal.inc
|
||||||
:language: python
|
:language: python
|
||||||
|
|
||||||
|
@ -13,3 +13,6 @@ Absolute :download:`/img.png` download.
|
|||||||
|
|
||||||
.. absolute image filename
|
.. absolute image filename
|
||||||
.. image:: /img.png
|
.. image:: /img.png
|
||||||
|
|
||||||
|
.. absolute include filename
|
||||||
|
.. include:: /test.inc
|
||||||
|
3
tests/root/test.inc
Normal file
3
tests/root/test.inc
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.. This file is included from subdir/includes.txt.
|
||||||
|
|
||||||
|
This is an include file.
|
@ -62,6 +62,7 @@ HTML_XPATH = {
|
|||||||
'subdir/includes.html': {
|
'subdir/includes.html': {
|
||||||
".//a[@href='../_downloads/img.png']": '',
|
".//a[@href='../_downloads/img.png']": '',
|
||||||
".//img[@src='../_images/img.png']": '',
|
".//img[@src='../_images/img.png']": '',
|
||||||
|
".//p": 'This is an include file.',
|
||||||
},
|
},
|
||||||
'includes.html': {
|
'includes.html': {
|
||||||
".//pre": u'Max Strauß',
|
".//pre": u'Max Strauß',
|
||||||
|
Loading…
Reference in New Issue
Block a user