help: pass around ui to doc loader (API)
authorYuya Nishihara <yuya@tcha.org>
Sat, 26 Sep 2015 12:06:30 +0900
changeset 26413 e0c572d4d112
parent 26412 7e8e3c0920a6
child 26414 c44b507e7c78
help: pass around ui to doc loader (API) This is necessary to hide DEPRECATED items conditionally. Flagged as API change because it will break "hg help git|subversion".
doc/check-seclevel.py
doc/gendoc.py
mercurial/help.py
tests/test-help.t
--- a/doc/check-seclevel.py	Sun Sep 27 23:34:37 2015 +0900
+++ b/doc/check-seclevel.py	Sat Sep 26 12:06:30 2015 +0900
@@ -79,7 +79,7 @@
     errorcnt = 0
     for names, sec, doc in helptable:
         if callable(doc):
-            doc = doc()
+            doc = doc(ui)
         errorcnt += checkseclevel(ui, doc,
                                   '%s help topic' % names[0],
                                   initlevel_topic)
--- a/doc/gendoc.py	Sun Sep 27 23:34:37 2015 +0900
+++ b/doc/gendoc.py	Sat Sep 26 12:06:30 2015 +0900
@@ -138,7 +138,7 @@
         if sectionfunc:
             ui.write(sectionfunc(sec))
         if callable(doc):
-            doc = doc()
+            doc = doc(ui)
         ui.write(doc)
         ui.write("\n")
 
--- a/mercurial/help.py	Sun Sep 27 23:34:37 2015 +0900
+++ b/mercurial/help.py	Sat Sep 26 12:06:30 2015 +0900
@@ -34,8 +34,8 @@
             rst.append('%s:%s: %s\n' % (' ' * indent, name, desc))
     return rst
 
-def extshelp():
-    rst = loaddoc('extensions')().splitlines(True)
+def extshelp(ui):
+    rst = loaddoc('extensions')(ui).splitlines(True)
     rst.extend(listexts(
         _('enabled extensions:'), extensions.enabled(), showdeprecated=True))
     rst.extend(listexts(_('disabled extensions:'), extensions.disabled()))
@@ -83,7 +83,7 @@
     if notomitted:
         rst.append('\n\n.. container:: notomitted\n\n    %s\n\n' % notomitted)
 
-def topicmatch(kw):
+def topicmatch(ui, kw):
     """Return help topics matching kw.
 
     Returns {'section': [(name, summary), ...], ...} where section is
@@ -101,7 +101,7 @@
         # Old extensions may use a str as doc.
         if (sum(map(lowercontains, names))
             or lowercontains(header)
-            or (callable(doc) and lowercontains(doc()))):
+            or (callable(doc) and lowercontains(doc(ui)))):
             results['topics'].append((names[0], header))
     import commands # avoid cycle
     for cmd, entry in commands.table.iteritems():
@@ -139,7 +139,7 @@
 def loaddoc(topic):
     """Return a delayed loader for help/topic.txt."""
 
-    def loader():
+    def loader(ui):
         docdir = os.path.join(util.datapath, 'help')
         path = os.path.join(docdir, topic + ".txt")
         doc = gettext(util.readfile(path))
@@ -415,7 +415,7 @@
         if not doc:
             rst.append("    %s\n" % _("(no help text available)"))
         if callable(doc):
-            rst += ["    %s\n" % l for l in doc().splitlines()]
+            rst += ["    %s\n" % l for l in doc(ui).splitlines()]
 
         if not ui.verbose:
             omitted = _('(some details hidden, use --verbose'
@@ -482,7 +482,7 @@
     rst = []
     kw = opts.get('keyword')
     if kw:
-        matches = topicmatch(name)
+        matches = topicmatch(ui, name)
         helpareas = []
         if opts.get('extension'):
             helpareas += [('extensions', _('Extensions'))]
--- a/tests/test-help.t	Sun Sep 27 23:34:37 2015 +0900
+++ b/tests/test-help.t	Sat Sep 26 12:06:30 2015 +0900
@@ -1105,7 +1105,7 @@
   > def extsetup(ui):
   >     help.helptable.append((["topic-containing-verbose"],
   >                            "This is the topic to test omit indicating.",
-  >                            lambda : testtopic))
+  >                            lambda ui: testtopic))
   > EOF
   $ echo '[extensions]' >> $HGRCPATH
   $ echo "addverboseitems = `pwd`/addverboseitems.py" >> $HGRCPATH