1
# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
2
# See LICENSE for details.
6
from cStringIO import StringIO
8
from twisted.python import text
9
from twisted.web import domhelpers, microdom
12
class DocbookSpitter(latex.BaseLatexSpitter):
16
def writeNodeData(self, node):
17
self.writer(node.data)
19
def visitNode_body(self, node):
20
self.visitNodeDefault(node)
21
self.writer('</section>'*self.currentLevel)
23
def visitNodeHeader(self, node):
24
level = int(node.tagName[1])
25
difference, self.currentLevel = level-self.currentLevel, level
26
self.writer('<section>'*difference+'</section>'*-difference)
28
self.writer('</section>\n<section>')
29
self.writer('<title>')
30
self.visitNodeDefault(node)
32
def visitNode_a_listing(self, node):
33
fileName = os.path.join(self.currDir, node.getAttribute('href'))
34
self.writer('<programlisting>\n')
35
self.writer(cgi.escape(open(fileName).read()))
36
self.writer('</programlisting>\n')
38
def visitNode_a_href(self, node):
39
self.visitNodeDefault(node)
41
def visitNode_a_name(self, node):
42
self.visitNodeDefault(node)
44
def visitNode_li(self, node):
45
for child in node.childNodes:
46
if getattr(child, 'tagName', None) != 'p':
47
new = microdom.Element('p')
48
new.childNodes = [child]
49
node.replaceChild(new, child)
50
self.visitNodeDefault(node)
52
visitNode_h2 = visitNode_h3 = visitNode_h4 = visitNodeHeader
53
end_h2 = end_h3 = end_h4 = '</title><para />'
54
start_title, end_title = '<section><title>', '</title><para />'
55
start_p, end_p = '<para>', '</para>'
56
start_strong, end_strong = start_em, end_em = '<emphasis>', '</emphasis>'
57
start_span_footnote, end_span_footnote = '<footnote><para>', '</para></footnote>'
59
start_pre, end_pre = '<programlisting>', '</programlisting>'
60
start_div_note, end_div_note = '<note>', '</note>'
61
start_li, end_li = '<listitem>', '</listitem>'
62
start_ul, end_ul = '<itemizedlist>', '</itemizedlist>'
63
start_ol, end_ol = '<orderedlist>', '</orderedlist>'
64
start_dl, end_dl = '<variablelist>', '</variablelist>'
65
start_dt, end_dt = '<varlistentry><term>', '</term>'
66
start_dd, end_dd = '<listitem><para>', '</para></listitem></varlistentry>'