merge with 0.6

This commit is contained in:
Georg Brandl 2010-01-03 12:41:51 +01:00
commit 268911eb47
5 changed files with 52 additions and 10 deletions

View File

@ -54,6 +54,12 @@ Release 1.0 (in development)
Release 0.6.4 (in development)
==============================
* #286: collect todo nodes after the whole document has been read;
this allows placing substitution references in todo items.
* #294: do not ignore an explicit ``today`` config value in a
LaTeX build.
* The ``alt`` text of inheritance diagrams is now much cleaner.
* Ignore images in section titles when generating link captions.

View File

@ -42,20 +42,31 @@ class Todo(Directive):
ad = make_admonition(todo_node, self.name, [_('Todo')], self.options,
self.content, self.lineno, self.content_offset,
self.block_text, self.state, self.state_machine)
ad[0].line = self.lineno
return [targetnode] + ad
# Attach a list of all todos to the environment,
# the todolist works with the collected todo nodes
if not hasattr(env, 'todo_all_todos'):
env.todo_all_todos = []
def process_todos(app, doctree):
# collect all todos in the environment
# this is not done in the directive itself because it some transformations
# must have already been run, e.g. substitutions
env = app.builder.env
if not hasattr(env, 'todo_all_todos'):
env.todo_all_todos = []
for node in doctree.traverse(todo_node):
try:
targetnode = node.parent[node.parent.index(node) - 1]
if not isinstance(targetnode, nodes.target):
raise IndexError
except IndexError:
targetnode = None
env.todo_all_todos.append({
'docname': env.docname,
'lineno': self.lineno,
'todo': ad[0].deepcopy(),
'lineno': node.line,
'todo': node.deepcopy(),
'target': targetnode,
})
return [targetnode] + ad
class TodoList(Directive):
"""
@ -152,6 +163,7 @@ def setup(app):
app.add_directive('todo', Todo)
app.add_directive('todolist', TodoList)
app.connect('doctree-read', process_todos)
app.connect('doctree-resolved', process_todo_nodes)
app.connect('env-purge-doc', purge_todos)

View File

@ -180,8 +180,6 @@ class LaTeXTranslator(nodes.NodeVisitor):
'pointsize': builder.config.latex_font_size,
# if empty, the title is set to the first section title
'title': document.settings.title,
'date': ustrftime(builder.config.today_fmt
or _('%B %d, %Y')),
'release': builder.config.release,
'author': document.settings.author,
'releasename': _('Release'),
@ -194,6 +192,11 @@ class LaTeXTranslator(nodes.NodeVisitor):
else:
docclass = builder.config.latex_docclass.get('manual', 'report')
self.elements['docclass'] = docclass
if builder.config.today:
self.elements['date'] = builder.config.today
else:
self.elements['date'] = ustrftime(builder.config.today_fmt
or _('%B %d, %Y'))
if builder.config.latex_logo:
self.elements['logo'] = '\\includegraphics{%s}\\par' % \
path.basename(builder.config.latex_logo)

View File

@ -24,6 +24,7 @@ Contents:
metadata
extensions
doctest
extensions
Python <http://python.org/>

View File

@ -6,3 +6,23 @@ extlinks
Test diverse links: :issue:`1000` and :pyurl:`dev/`, also with
:issue:`explicit caption <1042>`.
todo
----
.. todo::
Test the todo extension.
.. todo::
Test with |sub| (see #286).
.. |sub| replace:: substitution references
list of all todos
^^^^^^^^^^^^^^^^^
.. todolist::