[PATCH 10 of 10] help: add pieces of rst for help together and only format it once

Erik Zielke ez at aragost.com
Wed Nov 17 11:11:09 CST 2010


# HG changeset patch
# User Erik Zielke <ez at aragost.com>
# Date 1290013180 -3600
# Node ID 98e460c78393727a5fc5d8f5caab31ffffb9de94
# Parent  beb8321534406c5b84b36729137c39fd0572320e
help: add pieces of rst for help together and only format it once

diff -r beb832153440 -r 98e460c78393 mercurial/commands.py
--- a/mercurial/commands.py	Wed Nov 17 17:59:34 2010 +0100
+++ b/mercurial/commands.py	Wed Nov 17 17:59:40 2010 +0100
@@ -1874,81 +1874,12 @@
                                        table, ui.debugflag, globalopts,
                                         ui.config('ui', 'strict'),
                                         with_version, unknowncmd)
-
-    def helpcmd(name):
-        helpcmdrst = help.generatehelpcmdrst(ui, helpconfig)
-        if helpcmdrst:
-            formatted, pruned = minirst.format(helpcmdrst, textwidth,
-                                   keep=helpconfig['keep'])
-            ui.write(formatted)
-            ui.write('\n')
-
-    def helplist(header, extrainfo, select=None):
-        helpconfig['extrainfo'] = extrainfo
-        helplistrst = help.generatehelplistrst(header, helpconfig,
-                                               select=select)
-        formatted = minirst.format(helplistrst, textwidth)
-        ui.write(formatted)
-        ui.write('\n')
-
-    def helptopic(name):
-        helptopicrst = help.generatehelptopicrst(helpconfig)
-        formatted, pruned = minirst.format(helptopicrst, textwidth,
-                                   keep=helpconfig['keep'])
-        ui.write(formatted)
-        ui.write('\n')
-
-    def helpext(name):
-        helpextrst = help.generatethelpextrst(helpconfig)
-        formatted, pruned = minirst.format(helpextrst, textwidth,
-                                   keep=helpconfig['keep'])
-        ui.write(formatted)
-        ui.write('\n')
-
-    def helpextcmd(name):
-        helpextcmdrst = help.generatehelpextcmdrst(helpconfig)
-        formatted, pruned = minirst.format(helpextcmdrst, textwidth,
-                                   keep=helpconfig['keep'])
-        ui.write(formatted)
-        ui.write('\n')
-
-
-    help.addtopichook('revsets', revset.makedoc)
-
-    if name and name != 'shortlist':
-        i = None
-        if unknowncmd:
-            queries = (helpextcmd,)
-        else:
-            queries = (helptopic, helpcmd, helpext, helpextcmd)
-        for f in queries:
-            try:
-                f(name)
-                i = None
-                break
-            except error.UnknownCommand, inst:
-                i = inst
-        if i:
-            raise i
-
-    else:
-        # program name
-        if ui.verbose or with_version:
-            versionrst = help.generateversionrst(ui.quiet)
-            formatted = minirst.format(versionrst, textwidth)
-            ui.write(formatted)
-            ui.write('\n')
-        else:
-            ui.status(_("Mercurial Distributed SCM\n"))
-        ui.status('\n')
-
-        # list of commands
-        if name == "shortlist":
-            header = _('basic commands:\n\n')
-        else:
-            header = _('list of commands:\n\n')
-
-        helplist(header, True)
+    rst = help.generaterst(ui, helpconfig)
+    if rst:
+         formatted, pruned = minirst.format(rst, textwidth,
+                                            keep=helpconfig['keep'])
+         ui.write(formatted)
+         ui.write('\n')
 
 def identify(ui, repo, source=None,
              rev=None, num=None, id=None, branch=None, tags=None):
diff -r beb832153440 -r 98e460c78393 mercurial/help.py
--- a/mercurial/help.py	Wed Nov 17 17:59:34 2010 +0100
+++ b/mercurial/help.py	Wed Nov 17 17:59:40 2010 +0100
@@ -11,6 +11,7 @@
 import encoding
 import cmdutil
 import minirst
+import revset
 
 def generatehelplistrst(header, helpconfig, select=None):
     """Returns rst help list"""
@@ -290,7 +291,7 @@
 
     return helpconfig
 
-def generatehelptopicrst(helpconfig):
+def generatehelptopicrst(ui, helpconfig):
     """Returns rst for the help topic with the given name"""
 
     for names, header, doc in helptable:
@@ -413,7 +414,7 @@
 
     return ''.join(lines)
 
-def generatethelpextrst(helpconfig):
+def generatethelpextrst(ui, helpconfig):
     """Returns rst help for the extension with the given name"""
 
     try:
@@ -455,7 +456,7 @@
     return ''.join(lines)
 
 
-def generatehelpextcmdrst(helpconfig):
+def generatehelpextcmdrst(ui, helpconfig):
     """Returns rst help for the disabled extension cmd with the given name"""
     cmd, ext, mod = extensions.disabledcmd(helpconfig['name'],
                                            helpconfig['strict'])
@@ -580,6 +581,51 @@
 
     return ''.join(lines)
 
+def generaterst(ui, helpconfig):
+    addtopichook('revsets', revset.makedoc)
+    lines  = []
+
+
+    if helpconfig['name'] and helpconfig['name'] != 'shortlist':
+        i = None
+        if helpconfig['unknowncmd']:
+            queries = (generatehelpextcmdrst,)
+        else:
+            queries = (generatehelptopicrst, generatehelpcmdrst,
+                       generatethelpextrst, generatehelpextcmdrst)
+        for f in queries:
+            try:
+                helprst = f(ui, helpconfig)
+                lines.append(helprst)
+                i = None
+                break
+            except error.UnknownCommand, inst:
+                i = inst
+        if i:
+            raise i
+
+    else:
+        # program name
+        if helpconfig['verbose'] or helpconfig['with_version']:
+            versionrst = generateversionrst(helpconfig['quiet'])
+            lines.append(versionrst)
+            lines.append('\n')
+        elif not helpconfig['quiet']:
+            lines.append(_("Mercurial Distributed SCM\n"))
+        lines.append('\n')
+
+        # list of commands
+        if helpconfig['name'] == "shortlist":
+            header = _('basic commands:\n\n')
+        else:
+            header = _('list of commands:\n\n')
+
+        helpconfig['extrainfo'] = True
+        helplistrst = generatehelplistrst(header, helpconfig)
+        lines.append(helplistrst)
+        lines.append('\n')
+    return ''.join(lines)
+
 helptable = [
     (["config", "hgrc"], _("Configuration Files"), loaddoc('config')),
     (["dates"], _("Date Formats"), loaddoc('dates')),


More information about the Mercurial-devel mailing list