diff options
| author | goodger <goodger@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2002-05-05 15:31:17 +0000 |
|---|---|---|
| committer | goodger <goodger@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2002-05-05 15:31:17 +0000 |
| commit | 9c5bc6ca7bedb2a9ebdd40ae9db57a38cdb183a5 (patch) | |
| tree | b6fe2277c345431d8cf2bee25f5681b8af91b9c5 /docutils/transforms | |
| parent | 6a9b95ff6113f2c57b5f64817072a571cb8fe829 (diff) | |
| download | docutils-9c5bc6ca7bedb2a9ebdd40ae9db57a38cdb183a5.tar.gz | |
Changed ``Messages`` transform to properly filter out system messages below the warning threshold.
git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk/docutils@83 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'docutils/transforms')
| -rw-r--r-- | docutils/transforms/universal.py | 63 |
1 files changed, 36 insertions, 27 deletions
diff --git a/docutils/transforms/universal.py b/docutils/transforms/universal.py index 1cebcc9db..145a89b01 100644 --- a/docutils/transforms/universal.py +++ b/docutils/transforms/universal.py @@ -19,7 +19,7 @@ Transforms needed by most or all documents: __docformat__ = 'reStructuredText' -import re +import re, sys from docutils import nodes, utils from docutils.transforms import TransformError, Transform @@ -32,24 +32,29 @@ class Messages(Transform): """ def transform(self): - # @@@ filter out msgs below threshold? - if len(self.doctree.messages) > 0: + unfiltered = self.document.messages.getchildren() + threshold = self.document.reporter['writer'].warning_level + messages = [] + for msg in unfiltered: + if msg['level'] >= threshold: + messages.append(msg) + if len(messages) > 0: section = nodes.section(CLASS='system-messages') # @@@ get this from the language module? section += nodes.title('', 'Docutils System Messages') - section += self.doctree.messages.getchildren() - self.doctree.messages[:] = [] - self.doctree += section + section += messages + self.document.messages[:] = [] + self.document += section class TestMessages(Transform): """ - Append all system messages to the end of the doctree. + Append all system messages to the end of the document. """ def transform(self): - self.doctree += self.doctree.messages.getchildren() + self.document += self.document.messages.getchildren() class FinalChecks(Transform): @@ -61,8 +66,8 @@ class FinalChecks(Transform): """ def transform(self): - visitor = FinalCheckVisitor(self.doctree) - self.doctree.walk(visitor) + visitor = FinalCheckVisitor(self.document) + self.document.walk(visitor) class FinalCheckVisitor(nodes.NodeVisitor): @@ -75,21 +80,21 @@ class FinalCheckVisitor(nodes.NodeVisitor): return refname = node['refname'] try: - id = self.doctree.nameids[refname] + id = self.document.nameids[refname] except KeyError: - msg = self.doctree.reporter.error( + msg = self.document.reporter.error( 'Unknown target name: "%s".' % (node['refname'])) - self.doctree.messages += msg - msgid = self.doctree.set_id(msg) + self.document.messages += msg + msgid = self.document.set_id(msg) prb = nodes.problematic( node.rawsource, node.rawsource, refid=msgid) - prbid = self.doctree.set_id(prb) + prbid = self.document.set_id(prb) msg.add_backref(prbid) node.parent.replace(node, prb) return del node['refname'] node['refid'] = id - self.doctree.ids[id].referenced = 1 + self.document.ids[id].referenced = 1 node.resolved = 1 visit_footnote_reference = visit_citation_reference = visit_reference @@ -98,43 +103,47 @@ class FinalCheckVisitor(nodes.NodeVisitor): class Pending(Transform): """ - Execute pending transforms. + Base class for the execution of pending transforms. + + `nodes.pending` element objects each contain a "stage" attribute; the + stage of the pending element must match the `stage` of this transform. """ stage = None """The stage of processing applicable to this transform; match with - `nodes.pending.stage`. Possible values include 'first_reader', - 'last_reader', 'first_writer', and 'last_writer'. Override in - subclasses.""" + `nodes.pending.stage`. Possible values include 'first reader', + 'last reader', 'first writer', and 'last writer'. Overriden in + subclasses (below).""" def transform(self): - for pending in self.doctree.pending: + for pending in self.document.pending: if pending.stage == self.stage: - pending.transform(self.doctree, pending).transform() + pending.transform(self.document, self.component, + pending).transform() class FirstReaderPending(Pending): - stage = 'first_reader' + stage = 'first reader' class LastReaderPending(Pending): - stage = 'last_reader' + stage = 'last reader' class FirstWriterPending(Pending): - stage = 'first_writer' + stage = 'first writer' class LastWriterPending(Pending): - stage = 'last_writer' + stage = 'last writer' test_transforms = (TestMessages,) -"""Universal transforms to apply to the raw doctree when testing.""" +"""Universal transforms to apply to the raw document when testing.""" first_reader_transforms = (FirstReaderPending,) """Universal transforms to apply before any other Reader transforms.""" |
