mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Merged in guillemNaN/sphinx (pull request #261)
Add env-read-docs event to allow modify docnames list before processing
This commit is contained in:
commit
3c5cda97d1
@ -437,6 +437,14 @@ handlers to the events. Example:
|
|||||||
|
|
||||||
.. versionadded:: 0.5
|
.. versionadded:: 0.5
|
||||||
|
|
||||||
|
.. event:: env-read-docs (app, env, docnames)
|
||||||
|
|
||||||
|
Emited after get the list of all added and changed files and just before
|
||||||
|
read them. It allow extension author modify docnames list before processing;
|
||||||
|
reordering, append and remove.
|
||||||
|
|
||||||
|
.. versionadded:: 1.3.0
|
||||||
|
|
||||||
.. event:: source-read (app, docname, source)
|
.. event:: source-read (app, docname, source)
|
||||||
|
|
||||||
Emitted when a source file has been read. The *source* argument is a list
|
Emitted when a source file has been read. The *source* argument is a list
|
||||||
|
@ -49,6 +49,7 @@ events = {
|
|||||||
'builder-inited': '',
|
'builder-inited': '',
|
||||||
'env-get-outdated': 'env, added, changed, removed',
|
'env-get-outdated': 'env, added, changed, removed',
|
||||||
'env-purge-doc': 'env, docname',
|
'env-purge-doc': 'env, docname',
|
||||||
|
'env-read-docs': 'env, docnames',
|
||||||
'source-read': 'docname, source text',
|
'source-read': 'docname, source text',
|
||||||
'doctree-read': 'the doctree before being pickled',
|
'doctree-read': 'the doctree before being pickled',
|
||||||
'missing-reference': 'env, node, contnode',
|
'missing-reference': 'env, node, contnode',
|
||||||
|
@ -477,7 +477,10 @@ class BuildEnvironment:
|
|||||||
self.clear_doc(docname)
|
self.clear_doc(docname)
|
||||||
|
|
||||||
# read all new and changed files
|
# read all new and changed files
|
||||||
for docname in sorted(added | changed):
|
docnames = sorted(added | changed)
|
||||||
|
if app:
|
||||||
|
app.emit('env-read-docs', self, docnames)
|
||||||
|
for docname in docnames:
|
||||||
yield docname
|
yield docname
|
||||||
self.read_doc(docname, app=app)
|
self.read_doc(docname, app=app)
|
||||||
|
|
||||||
|
52
tests/test_env_read_docs.py
Normal file
52
tests/test_env_read_docs.py
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
test_env_read_docs
|
||||||
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Test docnames read order modification using the env-read-docs event.
|
||||||
|
|
||||||
|
:copyright: Copyright 2014 by the Sphinx team, see AUTHORS.
|
||||||
|
:license: BSD, see LICENSE for details.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import pickle
|
||||||
|
|
||||||
|
from docutils.parsers.rst.directives.html import MetaBody
|
||||||
|
|
||||||
|
from sphinx import addnodes
|
||||||
|
from sphinx.versioning import add_uids, merge_doctrees, get_ratio
|
||||||
|
|
||||||
|
from util import test_root, TestApp
|
||||||
|
|
||||||
|
def setup_module():
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_default_docnames_order():
|
||||||
|
"""By default, docnames are read in alphanumeric order"""
|
||||||
|
def on_env_read_docs(app, env, docnames):
|
||||||
|
pass
|
||||||
|
|
||||||
|
app = TestApp(srcdir='(temp)', freshenv=True)
|
||||||
|
env = app.env
|
||||||
|
app.connect('env-read-docs', on_env_read_docs)
|
||||||
|
|
||||||
|
msg, num, it = env.update(app.config, app.srcdir, app.doctreedir, app)
|
||||||
|
read_docnames = [docname for docname in it]
|
||||||
|
assert len(read_docnames) > 1 and read_docnames == sorted(read_docnames)
|
||||||
|
|
||||||
|
def test_inverse_docnames_order():
|
||||||
|
"""By default, docnames are read in alphanumeric order"""
|
||||||
|
def on_env_read_docs(app, env, docnames):
|
||||||
|
docnames.reverse()
|
||||||
|
|
||||||
|
app = TestApp(srcdir='(temp)', freshenv=True)
|
||||||
|
env = app.env
|
||||||
|
app.connect('env-read-docs', on_env_read_docs)
|
||||||
|
|
||||||
|
msg, num, it = env.update(app.config, app.srcdir, app.doctreedir, app)
|
||||||
|
read_docnames = [docname for docname in it]
|
||||||
|
reversed_read_docnames = sorted(read_docnames, reverse=True)
|
||||||
|
assert len(read_docnames) > 1 and read_docnames == reversed_read_docnames
|
||||||
|
|
||||||
|
def teardown_module():
|
||||||
|
(test_root / '_build').rmtree(True)
|
Loading…
Reference in New Issue
Block a user