Skip to content
This repository was archived by the owner on Oct 13, 2020. It is now read-only.

Commit b24998c

Browse files
committed
Merge pull request #122 from ajdavis/CDRIVER-572-man2mallard
Make man2mallard.py Python 3-compatible.
2 parents 400e78c + 9a20844 commit b24998c

File tree

1 file changed

+20
-11
lines changed

1 file changed

+20
-11
lines changed

doc/mallard2man.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,9 @@
3131
import os
3232
import sys
3333

34-
try:
35-
import codecs
36-
from datetime import datetime
37-
from lxml import etree
38-
except ImportError:
39-
sys.exit(0)
34+
import codecs
35+
from datetime import datetime
36+
from xml.etree import ElementTree
4037

4138
INCLUDE = '{http://www.w3.org/2001/XInclude}include'
4239
TITLE = '{http://projectmallard.org/1.0/}title'
@@ -73,10 +70,22 @@ def __init__(self, inFile, outFile, section):
7370
self.sections = []
7471

7572
def _parse(self):
76-
self.tree = etree.ElementTree()
77-
self.tree.parse(file(self.inFile))
73+
self.tree = ElementTree.ElementTree()
74+
self.tree.parse(open(self.inFile))
7875
self.root = self.tree.getroot()
7976

77+
# Python's standard ElementTree doesn't store an element's parent on
78+
# the element. Make a child->parent map.
79+
try:
80+
iterator = self.tree.iter()
81+
except AttributeError:
82+
# Python 2.6.
83+
iterator = self.tree.getiterator()
84+
self.parent_map = dict((c, p) for p in iterator for c in p)
85+
86+
def _get_parent(self, ele):
87+
return self.parent_map[ele]
88+
8089
def _extract(self):
8190
# Try to extract the title.
8291
for child in self.root.getchildren():
@@ -152,7 +161,7 @@ def _generateSynopsis(self, synopsis):
152161
self._writeCommand('.fi')
153162

154163
def _generateCode(self, code):
155-
if code.getparent().tag == P:
164+
if self._get_parent(code).tag == P:
156165
self._writeCommand('.B %s' % code.text)
157166
else:
158167
self._writeCommand('.nf')
@@ -240,7 +249,7 @@ def _generateElement(self, ele):
240249
d = codecs.open(f, 'r', encoding='utf-8').read()
241250
self._writeLine(d)
242251
else:
243-
print 'unknown element type', ele
252+
print('unknown element type %s' % ele)
244253

245254
def _generateTable(self, table):
246255
for child in table.getchildren():
@@ -297,7 +306,7 @@ def main(filenames, section='3'):
297306

298307
if __name__ == '__main__':
299308
if len(sys.argv) < 3:
300-
print 'usage: %s SECTION FILENAMES...' % sys.argv[0]
309+
print('usage: %s SECTION FILENAMES...' % sys.argv[0])
301310
sys.exit(1)
302311
section = sys.argv[1]
303312
main(sys.argv[2:], section)

0 commit comments

Comments
 (0)