[PATCH 2 of 8] extensions: split extraction of descriptions

Cédric Duval cedricduval at free.fr
Sat Jul 4 15:05:08 CDT 2009


# HG changeset patch
# User Cédric Duval <cedricduval at free.fr>
# Date 1246737838 -7200
# Node ID fcb323504f182c854d1704367c745494abd59fae
# Parent  b48834a6d0e1c68ebe2bee05f5d24a424bfef40b
extensions: split extraction of descriptions

Moving it away from disabled(). More generic function to extract descriptions
from a given hgext path, meant to be later moved into extdoc.

diff --git a/mercurial/extensions.py b/mercurial/extensions.py
--- a/mercurial/extensions.py
+++ b/mercurial/extensions.py
@@ -119,19 +119,29 @@
     return origfn
 
 def disabled():
-    '''find disabled extensions from hgext
+    '''find disabled extensions
     returns a dict of {name: desc}, and the max name length'''
 
+    # extensions found from hgext's path
     import hgext
     extpath = os.path.dirname(os.path.abspath(hgext.__file__))
+    d = extractdoc(extpath)
+
+    exts = dict([ (k, v) for k, v in d.iteritems() if k not in _order ])
+    maxlength = max([ len(name) for name in exts.keys() or [''] ])
+
+    return exts, maxlength
+
+def extractdoc(extpath):
+    '''extract descriptions from extensions in extpath
+    returns a dict of {name: desc}'''
 
     try: # might not be a filesystem path
         files = os.listdir(extpath)
     except OSError:
-        return None, 0
+        return {}
 
     exts = {}
-    maxlength = 0
     for e in files:
 
         if e.endswith('.py'):
@@ -143,7 +153,7 @@
             if not os.path.exists(path):
                 continue
 
-        if name in exts or name in _order or name == '__init__':
+        if name in exts or name == '__init__':
             continue
 
         try:
@@ -159,10 +169,7 @@
         else:
             exts[name] = _('(no help text available)')
 
-        if len(name) > maxlength:
-            maxlength = len(name)
-
-    return exts, maxlength
+    return exts
 
 def enabled():
     '''return a dict of {name: desc} of extensions, and the max name length'''



More information about the Mercurial-devel mailing list