~certify-web-dev/twisted/certify-trunk

« back to all changes in this revision

Viewing changes to twisted/lore/texi.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2007-01-17 14:52:35 UTC
  • mfrom: (1.1.5 upstream) (2.1.2 etch)
  • Revision ID: james.westby@ubuntu.com-20070117145235-btmig6qfmqfen0om
Tags: 2.5.0-0ubuntu1
New upstream version, compatible with python2.5.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
 
2
# See LICENSE for details.
 
3
 
 
4
 
5
 
 
6
from cStringIO import StringIO
 
7
import os, re
 
8
from twisted.python import text
 
9
from twisted.web import domhelpers
 
10
import latex, tree
 
11
 
 
12
spaceRe = re.compile('\s+')
 
13
 
 
14
def texiEscape(text):
 
15
    return spaceRe.sub(text, ' ')
 
16
 
 
17
entities = latex.entities.copy()
 
18
entities['copy'] = '@copyright{}'
 
19
 
 
20
class TexiSpitter(latex.BaseLatexSpitter):
 
21
 
 
22
    baseLevel = 1
 
23
 
 
24
    def writeNodeData(self, node):
 
25
        buf = StringIO()
 
26
        latex.getLatexText(node, self.writer, texiEscape, entities)
 
27
 
 
28
    def visitNode_title(self, node):
 
29
        self.writer('@node ')
 
30
        self.visitNodeDefault(node)
 
31
        self.writer('\n')
 
32
        self.writer('@section ')
 
33
        self.visitNodeDefault(node)
 
34
        self.writer('\n')
 
35
        headers = tree.getHeaders(domhelpers.getParents(node)[-1])
 
36
        if not headers:
 
37
            return
 
38
        self.writer('@menu\n')
 
39
        for header in headers:
 
40
            self.writer('* %s::\n' % domhelpers.getNodeText(header))
 
41
        self.writer('@end menu\n')
 
42
 
 
43
    def visitNode_pre(self, node):
 
44
        self.writer('@verbatim\n')
 
45
        buf = StringIO()
 
46
        latex.getLatexText(node, buf.write, entities=entities)
 
47
        self.writer(text.removeLeadingTrailingBlanks(buf.getvalue()))
 
48
        self.writer('@end verbatim\n')
 
49
 
 
50
    def visitNode_code(self, node):
 
51
        fout = StringIO()
 
52
        latex.getLatexText(node, fout.write, texiEscape, entities)
 
53
        self.writer('@code{'+fout.getvalue()+'}')
 
54
 
 
55
    def visitNodeHeader(self, node):
 
56
        self.writer('\n\n@node ')
 
57
        self.visitNodeDefault(node)
 
58
        self.writer('\n')
 
59
        level = (int(node.tagName[1])-2)+self.baseLevel
 
60
        self.writer('\n\n@'+level*'sub'+'section ')
 
61
        self.visitNodeDefault(node)
 
62
        self.writer('\n')
 
63
 
 
64
    def visitNode_a_listing(self, node):
 
65
        fileName = os.path.join(self.currDir, node.getAttribute('href'))
 
66
        self.writer('@verbatim\n')
 
67
        self.writer(open(fileName).read())
 
68
        self.writer('@end verbatim')
 
69
        # Write a caption for this source listing
 
70
 
 
71
    def visitNode_a_href(self, node):
 
72
        self.visitNodeDefault(node)
 
73
 
 
74
    def visitNode_a_name(self, node):
 
75
        self.visitNodeDefault(node)
 
76
 
 
77
    visitNode_h2 = visitNode_h3 = visitNode_h4 = visitNodeHeader
 
78
 
 
79
    start_dl = '@itemize\n'
 
80
    end_dl = '@end itemize\n'
 
81
    start_ul = '@itemize\n'
 
82
    end_ul = '@end itemize\n'
 
83
 
 
84
    start_ol = '@enumerate\n'
 
85
    end_ol = '@end enumerate\n'
 
86
 
 
87
    start_li = '@item\n'
 
88
    end_li = '\n'
 
89
 
 
90
    start_dt = '@item\n'
 
91
    end_dt = ': '
 
92
    end_dd = '\n'
 
93
 
 
94
    start_p = '\n\n'
 
95
 
 
96
    start_strong = start_em = '@emph{'
 
97
    end_strong = end_em = '}'
 
98
 
 
99
    start_q = "``"
 
100
    end_q = "''"
 
101
 
 
102
    start_span_footnote = '@footnote{'
 
103
    end_span_footnote = '}'
 
104
 
 
105
    start_div_note = '@quotation\n@strong{Note:}'
 
106
    end_div_note = '@end quotation\n'
 
107
 
 
108
    start_th = '@strong{'
 
109
    end_th = '}'