[Python-checkins] r64715 - in doctools/branches/0.4.x: CHANGES sphinx/ext/autodoc.py

georg.brandl python-checkins at python.org
Fri Jul 4 21:30:22 CEST 2008


Author: georg.brandl
Date: Fri Jul 4 21:30:22 2008
New Revision: 64715
Log:
Fix the delete() docstring processor function.
Modified:
 doctools/branches/0.4.x/CHANGES
 doctools/branches/0.4.x/sphinx/ext/autodoc.py
Modified: doctools/branches/0.4.x/CHANGES
==============================================================================
--- doctools/branches/0.4.x/CHANGES	(original)
+++ doctools/branches/0.4.x/CHANGES	Fri Jul 4 21:30:22 2008
@@ -14,15 +14,17 @@
 can now write arbitrary "rubric" directives, and only those with
 a title of "Footnotes" will be ignored.
 
-* Copy the HTML logo to the output "_static" directory.
+* Copy the HTML logo to the output ``_static`` directory.
 
 * Fix LaTeX code for modules with underscores in names and platforms.
 
 * Fix a crash with nonlocal image URIs.
 
-* Allow the usage of :noindex: in "automodule" directives, as
+* Allow the usage of :noindex: in ``automodule`` directives, as
 documented.
 
+* Fix the ``delete()`` docstring processor function in autodoc.
+
 
 Release 0.4 (Jun 23, 2008)
 ==========================
Modified: doctools/branches/0.4.x/sphinx/ext/autodoc.py
==============================================================================
--- doctools/branches/0.4.x/sphinx/ext/autodoc.py	(original)
+++ doctools/branches/0.4.x/sphinx/ext/autodoc.py	Fri Jul 4 21:30:22 2008
@@ -113,25 +113,33 @@
 del lines[-post:]
 return process
 
-def between(marker, what=None):
+def between(marker, what=None, keepempty=False):
 """
- Return a listener that only keeps lines between the first two lines that
- match the *marker* regular expression. If *what* is a sequence of strings,
- only docstrings of a type in *what* will be processed.
+ Return a listener that only keeps lines between lines that match the
+ *marker* regular expression. If no line matches, the resulting docstring
+ would be empty, so no change will be made unless *keepempty* is true.
+
+ If *what* is a sequence of strings, only docstrings of a type in *what* will
+ be processed.
 """
 marker_re = re.compile(marker)
 def process(app, what_, name, obj, options, lines):
 if what and what_ not in what:
 return
- seen = 0
- for i, line in enumerate(lines[:]):
+ deleted = 0
+ delete = True
+ orig_lines = lines[:]
+ for i, line in enumerate(orig_lines):
+ if delete:
+ lines.pop(i - deleted)
+ deleted += 1
 if marker_re.match(line):
- if not seen:
- del lines[:i+1]
- seen = i+1
- else:
- del lines[i-seen:]
- break
+ delete = not delete
+ if delete:
+ lines.pop(i - deleted)
+ deleted += 1
+ if not lines and not keepempty:
+ lines[:] = orig_lines
 return process
 
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /