help: consolidate topic hooks in help.py

This removes loops like cmdutil->revset->help->extensions->cmdutil and
simplifies the code.
This commit is contained in:
Matt Mackall 2011-05-13 12:57:27 -05:00
parent 9fd29f01e9
commit 1d5abac148
6 changed files with 16 additions and 21 deletions

View File

@ -13,7 +13,7 @@ import hg, scmutil, util, revlog, extensions, copies, error, bookmarks
import patch, help, url, encoding, templatekw, discovery
import archival, changegroup, cmdutil, sshserver, hbisect, hgweb, hgweb.server
import merge as mergemod
import minirst, revset, templatefilters
import minirst, revset
import dagparser, context, simplemerge
import random, setdiscovery, treediscovery, dagutil
@ -2758,10 +2758,6 @@ def help_(ui, name=None, with_version=False, unknowncmd=False, full=True, **opts
ui.write(_('use "hg help extensions" for information on enabling '
'extensions\n'))
help.addtopichook('revsets', revset.makedoc)
help.addtopichook('templates', templatekw.makedoc)
help.addtopichook('templates', templatefilters.makedoc)
if name and name != 'shortlist':
i = None
if unknowncmd:

View File

@ -248,7 +248,7 @@ def _disabledhelp(path):
except IOError:
return
else:
doc = moduledoc(file)
doc = _moduledoc(file)
file.close()
if doc: # extracting localized synopsis

View File

@ -7,7 +7,7 @@
from i18n import gettext, _
import sys, os
import extensions
import extensions, revset, templatekw, templatefilters
import util
def listexts(header, exts, indent=1):
@ -76,8 +76,7 @@ helptable = sorted([
# Map topics to lists of callable taking the current topic help and
# returning the updated version
helphooks = {
}
helphooks = {}
def addtopichook(topic, rewriter):
helphooks.setdefault(topic, []).append(rewriter)
@ -97,3 +96,12 @@ def makeitemsdoc(topic, doc, marker, items):
entries.append('\n'.join(lines))
entries = '\n\n'.join(entries)
return doc.replace(marker, entries)
def addtopicsymbols(topic, marker, symbols):
def add(topic, doc):
return makeitemsdoc(topic, doc, marker, symbols)
addtopichook(topic, add)
addtopicsymbols('revsets', '.. predicatesmarker', revset.symbols)
addtopicsymbols('templates', '.. keywordsmarker', templatekw.keywords)
addtopicsymbols('templates', '.. filtersmarker', templatefilters.filters)

View File

@ -6,7 +6,7 @@
# GNU General Public License version 2 or any later version.
import re
import parser, util, error, discovery, help, hbisect
import parser, util, error, discovery, hbisect
import bookmarks as bookmarksmod
import match as matchmod
from i18n import _
@ -981,8 +981,5 @@ def match(ui, spec):
return getset(repo, subset, tree)
return mfunc
def makedoc(topic, doc):
return help.makeitemsdoc(topic, doc, '.. predicatesmarker', symbols)
# tell hggettext to extract docstrings from these functions:
i18nfunctions = symbols.values()

View File

@ -6,7 +6,7 @@
# GNU General Public License version 2 or any later version.
import cgi, re, os, time, urllib
import encoding, node, util, help
import encoding, node, util
def addbreaks(text):
""":addbreaks: Any text. Add an XHTML "<br />" tag before the end of
@ -358,8 +358,5 @@ filters = {
"xmlescape": xmlescape,
}
def makedoc(topic, doc):
return help.makeitemsdoc(topic, doc, '.. filtersmarker', filters)
# tell hggettext to extract docstrings from these functions:
i18nfunctions = filters.values()

View File

@ -6,7 +6,7 @@
# GNU General Public License version 2 or any later version.
from node import hex
import patch, util, error, help
import patch, util, error
def showlist(name, values, plural=None, **args):
'''expand set of values.
@ -313,8 +313,5 @@ keywords = {
'tags': showtags,
}
def makedoc(topic, doc):
return help.makeitemsdoc(topic, doc, '.. keywordsmarker', keywords)
# tell hggettext to extract docstrings from these functions:
i18nfunctions = keywords.values()