diff options
| author | Georg Brandl <georg@python.org> | 2009-01-13 23:59:01 +0100 |
|---|---|---|
| committer | Georg Brandl <georg@python.org> | 2009-01-13 23:59:01 +0100 |
| commit | 2d740f6f61c6a783fc0c270188393e30997ddb25 (patch) | |
| tree | 959f93834256617ea84f2144baa4bf5cb8d18dee /sphinx/builders/text.py | |
| parent | c8095115faac2bf326c856f531691bfe0661b613 (diff) | |
| parent | 778631271c3ee71d0e54e6405db1a951f4de4e09 (diff) | |
| download | sphinx-2d740f6f61c6a783fc0c270188393e30997ddb25.tar.gz | |
merge with 0.5
Diffstat (limited to 'sphinx/builders/text.py')
| -rw-r--r-- | sphinx/builders/text.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/sphinx/builders/text.py b/sphinx/builders/text.py new file mode 100644 index 00000000..aaafedb4 --- /dev/null +++ b/sphinx/builders/text.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +""" + sphinx.builders.text + ~~~~~~~~~~~~~~~~~~~~ + + Plain-text Sphinx builder. + + :copyright: Copyright 2007-2009 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import codecs +from os import path + +from docutils.io import StringOutput + +from sphinx.util import ensuredir, os_path +from sphinx.builders import Builder +from sphinx.writers.text import TextWriter + + +class TextBuilder(Builder): + name = 'text' + out_suffix = '.txt' + + def init(self): + pass + + def get_outdated_docs(self): + for docname in self.env.found_docs: + if docname not in self.env.all_docs: + yield docname + continue + targetname = self.env.doc2path(docname, self.outdir, self.out_suffix) + try: + targetmtime = path.getmtime(targetname) + except Exception: + targetmtime = 0 + try: + srcmtime = path.getmtime(self.env.doc2path(docname)) + if srcmtime > targetmtime: + yield docname + except EnvironmentError: + # source doesn't exist anymore + pass + + def get_target_uri(self, docname, typ=None): + return '' + + def prepare_writing(self, docnames): + self.writer = TextWriter(self) + + def write_doc(self, docname, doctree): + destination = StringOutput(encoding='utf-8') + self.writer.write(doctree, destination) + outfilename = path.join(self.outdir, os_path(docname) + self.out_suffix) + ensuredir(path.dirname(outfilename)) # normally different from self.outdir + try: + f = codecs.open(outfilename, 'w', 'utf-8') + try: + f.write(self.writer.output) + finally: + f.close() + except (IOError, OSError), err: + self.warn("Error writing file %s: %s" % (outfilename, err)) + + def finish(self): + pass |
