[Checkins] SVN: manuel/branches/jim-custom-doctest-parsers/src/manuel/doctest.py Added plumbing to pass an alternate doctest parser.

Jim Fulton jim at zope.com
Mon Jan 10 18:24:06 EST 2011


Log message for revision 119482:
  Added plumbing to pass an alternate doctest parser.
  Still need tests.
  

Changed:
  U   manuel/branches/jim-custom-doctest-parsers/src/manuel/doctest.py

-=-
Modified: manuel/branches/jim-custom-doctest-parsers/src/manuel/doctest.py
===================================================================
--- manuel/branches/jim-custom-doctest-parsers/src/manuel/doctest.py	2011-01-10 22:24:22 UTC (rev 119481)
+++ manuel/branches/jim-custom-doctest-parsers/src/manuel/doctest.py	2011-01-10 23:24:05 UTC (rev 119482)
@@ -9,13 +9,13 @@
     pass
 
 
-def parse(document):
+def parse(document, parser):
     for region in list(document):
         if region.parsed:
             continue
         region_start = region.lineno
         region_end = region.lineno + region.source.count('\n')
-        for chunk in doctest.DocTestParser().parse(region.source):
+        for chunk in parser.parse(region.source):
             # If the chunk contains prose (as opposed to and example), skip it.
             if isinstance(chunk, basestring):
                 continue
@@ -92,11 +92,15 @@
 
 class Manuel(manuel.Manuel):
 
-    def __init__(self, optionflags=0, checker=None):
+    def __init__(self, optionflags=0, checker=None, parser=None):
         self.runner = doctest.DocTestRunner(optionflags=optionflags,
             checker=checker)
         self.debug_runner = doctest.DebugRunner(optionflags=optionflags)
         def evaluate_closure(region, document, globs):
             # capture "self"
             evaluate(self, region, document, globs)
-        manuel.Manuel.__init__(self, [parse], [evaluate_closure], [format])
+        parser = parser or doctest.DocTestParser()
+        manuel.Manuel.__init__(
+            self,
+            [lambda document: parse(document, parser)],
+            [evaluate_closure], [format])



More information about the checkins mailing list