From: <gr...@us...> - 2006-10-23 18:06:31
|
Author: grubert Date: 2006-10-23 20:06:23 +0200 (Mon, 23 Oct 2006) New Revision: 4791 Modified: trunk/sandbox/manpage-writer/README.txt trunk/sandbox/manpage-writer/expected/test.man trunk/sandbox/manpage-writer/input/test.txt trunk/sandbox/manpage-writer/writers/manpage.py Log: Add alpha lists. Modified: trunk/sandbox/manpage-writer/README.txt =================================================================== --- trunk/sandbox/manpage-writer/README.txt 2006-10-23 13:57:54 UTC (rev 4790) +++ trunk/sandbox/manpage-writer/README.txt 2006-10-23 18:06:23 UTC (rev 4791) @@ -100,7 +100,8 @@ * Tables * Images * Equations -* nested list entries sometimes get bold. +* nested list entries sometimes get bold. RST problem +* RST problem "-d # option " breaks * enumerated lists with more than 9 Change log Modified: trunk/sandbox/manpage-writer/expected/test.man =================================================================== --- trunk/sandbox/manpage-writer/expected/test.man 2006-10-23 13:57:54 UTC (rev 4790) +++ trunk/sandbox/manpage-writer/expected/test.man 2006-10-23 18:06:23 UTC (rev 4791) @@ -50,14 +50,14 @@ enumeration -.RS 4 +.RS 3 .TP 2 \(bu .TP .B and some other BUG this line is bold -.RS 6 +.RS 2 .TP 2 \(bu bullets @@ -81,7 +81,31 @@ 5. a third +and another + +.RS 3 +.TP 2 +a. + +.TP +.B alphabeticall + +.RS 2 +.TP 2 +a. +betacarotin + + +.TP 2 +b. +grammar + + +.RE + +.RE + .TP 3 6. a third @@ -153,5 +177,5 @@ public domain Behave responsible. -.\" Generated by docutils manpage writer on 2006-10-23 15:37. +.\" Generated by docutils manpage writer on 2006-10-23 20:03. .\" Modified: trunk/sandbox/manpage-writer/input/test.txt =================================================================== --- trunk/sandbox/manpage-writer/input/test.txt 2006-10-23 13:57:54 UTC (rev 4790) +++ trunk/sandbox/manpage-writer/input/test.txt 2006-10-23 18:06:23 UTC (rev 4791) @@ -45,6 +45,11 @@ 3. a third 4. a third 5. a third + + a. alphabeticall + b. betacarotin + c. grammar + 6. a third 7. a third 8. a third Modified: trunk/sandbox/manpage-writer/writers/manpage.py =================================================================== --- trunk/sandbox/manpage-writer/writers/manpage.py 2006-10-23 13:57:54 UTC (rev 4790) +++ trunk/sandbox/manpage-writer/writers/manpage.py 2006-10-23 18:06:23 UTC (rev 4791) @@ -128,6 +128,48 @@ def depart_Text(self, node): pass + def list_start(self, node): + class enum_char: + enum_style = { + 'arabic' : (3,1), + 'loweralpha' : (2,'a'), + 'upperalpha' : (2,'A'), + 'lowerroman' : (5,'i'), + 'upperroman' : (5,'I'), + 'bullet' : (2,'\\(bu'), + 'emdash' : (2,'\\(em'), + } + def __init__(self, style): + self._style = self.enum_style[style] + self._cnt = -1 + def next(self): + self._cnt += 1 + try: + return "%d." % (self._style[1] + self._cnt) + except: + if self._style[1][0] == '\\': + return self._style[1] + # BUG romans dont work + # BUG alpha only a...z + return "%c." % (ord(self._style[1])+self._cnt) + def get_width(self): + return self._style[0] + + if node.has_key('enumtype'): + self._list_char.append(enum_char(node['enumtype'])) + else: + self._list_char.append(enum_char('bullet')) + if len(self._list_char) > 1: + # indent nested lists + # BUG indentation depends on indentation of parent list. + self.body.append('\n.RS %d' % self._list_char[-2].get_width()) + + def list_end(self): + self._list_char.pop() + if len(self._list_char) > 0: + self.body.append('\n.RE\n') + + def append_header(self): """append header with .TH and .SH NAME""" # TODO before everything @@ -195,15 +237,10 @@ return 1 def visit_bullet_list(self, node): - # BUG indentation debends on number of entries in enumerated lists. - if len(self._list_char) > 0: - self.body.append('\n.RS %d' % (len(self._list_char)*2)) - self._list_char.append("*") + self.list_start(node) def depart_bullet_list(self, node): - self._list_char.pop() - if len(self._list_char) > 0: - self.body.append('\n.RE\n') + self.list_end() def visit_caption(self, node): raise NotImplementedError, node.astext() @@ -404,16 +441,10 @@ self.body.append(self.context.pop()) def visit_enumerated_list(self, node): - if len(self._list_char) > 0: - # indentation depends on previous list - self.body.append('\n.RS %d' % (len(self._list_char)*2)) - # TODO other start values. - self._list_char.append(0) + self.list_start(node) def depart_enumerated_list(self, node): - self._list_char.pop() - if len(self._list_char) > 0: - self.body.append('\n.RE\n') + self.list_end() def visit_error(self, node): self.visit_admonition(node, 'error') @@ -612,13 +643,9 @@ self.body.append('\n</pre>\n') def visit_list_item(self, node): - try: - self._list_char[-1] += 1 - except: - # bullets \(bu or \(em em dash - self.body.append('\n.TP 2\n\\(bu\n') - else: - self.body.append('\n.TP 3\n%d.\n' % self._list_char[-1]) + self.body.append('\n.TP %d\n%s\n' % ( + self._list_char[-1].get_width(), + self._list_char[-1].next(),) ) def depart_list_item(self, node): pass |