summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Waltman <jonathan.waltman@gmail.com>2011-02-22 16:31:52 -0600
committerJon Waltman <jonathan.waltman@gmail.com>2011-02-22 16:31:52 -0600
commit2bf06582b7dc889b29c425de082de42bf9f54c7d (patch)
treeb0ff0212b7a92bbaab3ffa816d1c89aa4673cdfa
parent5e41e7e234a941b18e19899df0c46e1c65d2bc42 (diff)
downloadsphinx-2bf06582b7dc889b29c425de082de42bf9f54c7d.tar.gz
Wrap long menu entries in Texinfo.
-rw-r--r--sphinx/writers/texinfo.py27
1 files changed, 18 insertions, 9 deletions
diff --git a/sphinx/writers/texinfo.py b/sphinx/writers/texinfo.py
index f5d25d46..24a57c6c 100644
--- a/sphinx/writers/texinfo.py
+++ b/sphinx/writers/texinfo.py
@@ -11,6 +11,7 @@
import re
from os import path
+import textwrap
from docutils import nodes, writers
@@ -351,6 +352,16 @@ class TexinfoTranslator(nodes.NodeVisitor):
return
self.body[-1] = self.body[-1].rstrip()
+ def format_menu_entry(self, name, node_name, desc):
+ if name == node_name:
+ s = '* %s:: ' % (name,)
+ else:
+ s = '* %s: %s. ' % (name, node_name)
+ offset = max((24, (len(name) + 4) % 78))
+ wdesc = '\n'.join(' ' * offset + l for l in
+ textwrap.wrap(desc, width=78-offset))
+ return s + wdesc.strip() + '\n'
+
def add_menu_entries(self, entries, reg=re.compile(r'\s+---?\s+')):
for entry in entries:
name = self.node_names[entry]
@@ -362,11 +373,8 @@ class TexinfoTranslator(nodes.NodeVisitor):
desc = ''
name = escape_menu(name)
desc = escape(desc)
- if name == entry:
- self.add_text('* %s::\t%s\n' % (name, desc), fresh=1)
- else:
- self.add_text('* %s: %s.\t%s\n' %
- (name, entry, desc), fresh=1)
+ me = self.format_menu_entry(name, entry, desc)
+ self.add_text(me, fresh=1)
def add_menu(self, node_name):
entries = self.node_menus[node_name]
@@ -418,10 +426,11 @@ class TexinfoTranslator(nodes.NodeVisitor):
for entry in entries:
if not entry[3]:
continue
- ret.append('* %s: %s.\t%s\n' %
- (escape_menu(entry[0]),
- self.get_short_id(entry[3]),
- escape_arg(entry[6])))
+ name = escape_menu(entry[0])
+ sid = self.get_short_id(entry[3])
+ desc = escape_arg(entry[6])
+ me = self.format_menu_entry(name, sid, desc)
+ ret.append(me)
ret.append('@end menu\n')
return ''.join(ret)