[Docstring-checkins] CVS: dps/dps/readers __init__.py,1.1,1.2
Status: Pre-Alpha
Brought to you by:
goodger
From: David G. <go...@us...> - 2002-02-07 01:59:54
|
Update of /cvsroot/docstring/dps/dps/readers In directory usw-pr-cvs1:/tmp/cvs-serv9056/dps/dps/readers Modified Files: __init__.py Log Message: progress Index: __init__.py =================================================================== RCS file: /cvsroot/docstring/dps/dps/readers/__init__.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** __init__.py 2002/02/06 03:01:40 1.1 --- __init__.py 2002/02/07 01:59:51 1.2 *************** *** 16,19 **** --- 16,20 ---- + import sys from dps import nodes, utils *************** *** 28,33 **** """ ! def __init__(self, languagecode='en', warninglevel=2, errorlevel=4, ! warningstream=None, debug=0): """ Initialize the Reader instance. --- 29,37 ---- """ ! transforms = () ! """Ordered list of transform classes (each with a ``transform()`` method). ! Populated by subclasses. `Reader.transform()` instantiates & runs them.""" ! ! def __init__(self, reporter, languagecode): """ Initialize the Reader instance. *************** *** 40,45 **** """Default language for new documents.""" ! self.reporter = utils.Reporter(warninglevel, errorlevel, warningstream, ! debug) """A `utils.Reporter` instance shared by all doctrees.""" --- 44,48 ---- """Default language for new documents.""" ! self.reporter = reporter """A `utils.Reporter` instance shared by all doctrees.""" *************** *** 51,60 **** a collection of strings.""" def read(self, source, parser): self.source = source ! self.scan() ! self.parse(parser) # parser may vary depending on input self.transform() ! return self.getdocument() def scan(self, source): --- 54,68 ---- a collection of strings.""" + self.transforms = list(self.transforms) + """Instance copy of `Reader.transforms`; may be modified by client.""" + def read(self, source, parser): self.source = source ! self.parser = parser ! self.scan(self.source) # may modify self.parser, ! # depending on input ! self.parse(self.parser) self.transform() ! return self.document def scan(self, source): *************** *** 62,84 **** raise NotImplementedError('subclass must override this method') def parse(self, parser): ! """Override to parse `self.input` into one or more document trees.""" ! raise NotImplementedError('subclass must override this method') def transform(self): ! """Override to run document tree transforms.""" ! raise NotImplementedError('subclass must override this method') def newdocument(self, languagecode=None): """Create and return a new empty document tree (root node).""" ! if not languagecode: ! languagecode = self.languagecode ! document = nodes.document(languagecode=languagecode, ! reporter=self.reporter) return document _reader_aliases = {'rtxt': 'standalone', ! 'restructuredtext': 'standalone'} def get_reader_class(readername): --- 70,110 ---- raise NotImplementedError('subclass must override this method') + def scanfile(self, source): + """ + Scan a single file, store data in `self.input`. + + Parameter `source` may be: + + (a) a file-like object, which is read directly; + (b) a path to a file, which is opened and then read; or + (c) `None`, which implies `sys.stdin`. + """ + if hasattr(source, 'read'): + self.input = source.read() + elif self.source: + self.input = open(source).read() + else: + self.input = sys.stdin.read() + def parse(self, parser): ! """Parse `self.input` into a document tree.""" ! self.document = self.newdocument() ! parser.parse(self.input, self.document) def transform(self): ! """Run all of the transforms defined for this Reader.""" ! for xclass in self.transforms: ! xclass().transform(self.document) def newdocument(self, languagecode=None): """Create and return a new empty document tree (root node).""" ! document = nodes.document( ! languagecode=(languagecode or self.languagecode), ! reporter=self.reporter) return document _reader_aliases = {'rtxt': 'standalone', ! 'restructuredtext': 'standalone'} def get_reader_class(readername): |