Generate text documentation in a single file.

This commit is contained in:
Daniele Varrazzo 2010-02-14 14:45:15 +00:00
parent a1fa06e6d8
commit 620f77cb77
4 changed files with 73 additions and 9 deletions

1
.gitignore vendored
View File

@ -8,3 +8,4 @@ dist/*
build/*
doc/_build/*
doc/html/*
doc/psycopg2.txt

View File

@ -17,7 +17,7 @@ ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest
doc: html
all: html text
check: doctest
@ -48,6 +48,12 @@ dirhtml:
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
tools/stitch_text.py index.rst $(BUILDDIR)/text > psycopg2.txt
@echo
@echo "Build finished. The text file is psycopg2.txt."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo

View File

@ -40,6 +40,15 @@ Contents:
extras
errorcodes
.. ifconfig:: builder != 'text'
.. rubric:: Indices and tables
* :ref:`genindex`
* :ref:`search`
.. ifconfig:: todo_include_todos
.. note::
@ -48,11 +57,3 @@ Contents:
.. todolist::
Indices and tables
==================
* :ref:`genindex`
* :ref:`search`

56
doc/tools/stitch_text.py Executable file
View File

@ -0,0 +1,56 @@
#! /usr/bin/env python
"""A script to stitch together the generated text files in the correct order.
"""
import os
import sys
def main():
if len(sys.argv) != 3:
print >>sys.stderr, "usage: %s index.rst text-dir"
return 2
_, index, txt_dir = sys.argv
for fb in iter_file_base(index):
emit(fb, txt_dir)
return 0
def iter_file_base(fn):
have_line = iter(open(fn)).next
while not have_line().startswith('.. toctree'):
pass
while have_line().strip().startswith(':'):
pass
yield os.path.splitext(os.path.basename(fn))[0]
n = 0
while 1:
line = have_line()
if line.isspace():
continue
if line.startswith(".."):
break
n += 1
yield line.strip()
if n < 5:
# maybe format changed?
raise Exception("Not enough files found. Format change in index.rst?")
def emit(basename, txt_dir):
for line in open(os.path.join(txt_dir, basename + ".txt")):
line = line.replace("``", "'")
sys.stdout.write(line)
# some space between sections
print
print
if __name__ == '__main__':
sys.exit(main())