~landscape/zope3/newer-from-ztk

« back to all changes in this revision

Viewing changes to src/twisted/lore/texi.py

  • Committer: Thomas Hervé
  • Date: 2009-07-08 13:52:04 UTC
  • Revision ID: thomas@canonical.com-20090708135204-df5eesrthifpylf8
Remove twisted copy

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 = '}'