comparison doc/gendoc.py @ 18748:6e676fb6ea44

help: use a full header for topic titles ...for prettier HTML!
author Dan Villiom Podlaski Christiansen <danchr@gmail.com>
date Sun, 10 Feb 2013 12:58:57 +0100
parents 979b107eaea2
children 814291b5e79c
comparison
equal deleted inserted replaced
18747:f5db3092790f 18748:6e676fb6ea44
3 sys.path.insert(0, "..") 3 sys.path.insert(0, "..")
4 # fall back to pure modules if required C extensions are not available 4 # fall back to pure modules if required C extensions are not available
5 sys.path.append(os.path.join('..', 'mercurial', 'pure')) 5 sys.path.append(os.path.join('..', 'mercurial', 'pure'))
6 from mercurial import demandimport; demandimport.enable() 6 from mercurial import demandimport; demandimport.enable()
7 from mercurial import encoding 7 from mercurial import encoding
8 from mercurial import minirst
8 from mercurial.commands import table, globalopts 9 from mercurial.commands import table, globalopts
9 from mercurial.i18n import _ 10 from mercurial.i18n import _
10 from mercurial.help import helptable 11 from mercurial.help import helptable
11 from mercurial import extensions 12 from mercurial import extensions
12 from mercurial import util 13 from mercurial import util
61 s = attr[2] 62 s = attr[2]
62 d['synopsis'] = s.strip() 63 d['synopsis'] = s.strip()
63 64
64 return d 65 return d
65 66
66 def section(ui, s):
67 ui.write("%s\n%s\n\n" % (s, "\"" * encoding.colwidth(s)))
68
69 def subsection(ui, s):
70 ui.write("%s\n%s\n\n" % (s, '=' * encoding.colwidth(s)))
71
72 def subsubsection(ui, s):
73 ui.write("%s\n%s\n\n" % (s, "-" * encoding.colwidth(s)))
74
75 def subsubsubsection(ui, s):
76 ui.write("%s\n%s\n\n" % (s, "." * encoding.colwidth(s)))
77
78
79 def show_doc(ui): 67 def show_doc(ui):
80 # print options 68 # print options
81 section(ui, _("Options")) 69 ui.write(minirst.section(_("Options")))
82 for optstr, desc in get_opts(globalopts): 70 for optstr, desc in get_opts(globalopts):
83 ui.write("%s\n %s\n\n" % (optstr, desc)) 71 ui.write("%s\n %s\n\n" % (optstr, desc))
84 72
85 # print cmds 73 # print cmds
86 section(ui, _("Commands")) 74 ui.write(minirst.section(_("Commands")))
87 commandprinter(ui, table, subsection) 75 commandprinter(ui, table, minirst.subsection)
88 76
89 # print topics 77 # print topics
90 for names, sec, doc in helptable: 78 for names, sec, doc in helptable:
91 if names[0] == "config": 79 if names[0] == "config":
92 # The config help topic is included in the hgrc.5 man 80 # The config help topic is included in the hgrc.5 man
93 # page. 81 # page.
94 continue 82 continue
95 for name in names: 83 for name in names:
96 ui.write(".. _%s:\n" % name) 84 ui.write(".. _%s:\n" % name)
97 ui.write("\n") 85 ui.write("\n")
98 section(ui, sec) 86 ui.write(minirst.section(sec))
99 if util.safehasattr(doc, '__call__'): 87 if util.safehasattr(doc, '__call__'):
100 doc = doc() 88 doc = doc()
101 ui.write(doc) 89 ui.write(doc)
102 ui.write("\n") 90 ui.write("\n")
103 91
104 section(ui, _("Extensions")) 92 ui.write(minirst.section(_("Extensions")))
105 ui.write(_("This section contains help for extensions that are " 93 ui.write(_("This section contains help for extensions that are "
106 "distributed together with Mercurial. Help for other " 94 "distributed together with Mercurial. Help for other "
107 "extensions is available in the help system.")) 95 "extensions is available in the help system."))
108 ui.write("\n\n" 96 ui.write("\n\n"
109 ".. contents::\n" 97 ".. contents::\n"
111 " :local:\n" 99 " :local:\n"
112 " :depth: 1\n\n") 100 " :depth: 1\n\n")
113 101
114 for extensionname in sorted(allextensionnames()): 102 for extensionname in sorted(allextensionnames()):
115 mod = extensions.load(None, extensionname, None) 103 mod = extensions.load(None, extensionname, None)
116 subsection(ui, extensionname) 104 ui.write(minirst.subsection(extensionname))
117 ui.write("%s\n\n" % mod.__doc__) 105 ui.write("%s\n\n" % mod.__doc__)
118 cmdtable = getattr(mod, 'cmdtable', None) 106 cmdtable = getattr(mod, 'cmdtable', None)
119 if cmdtable: 107 if cmdtable:
120 subsubsection(ui, _('Commands')) 108 ui.write(minirst.subsubsection(_('Commands')))
121 commandprinter(ui, cmdtable, subsubsubsection) 109 commandprinter(ui, cmdtable, minirst.subsubsubsection)
122 110
123 def commandprinter(ui, cmdtable, sectionfunc): 111 def commandprinter(ui, cmdtable, sectionfunc):
124 h = {} 112 h = {}
125 for c, attr in cmdtable.items(): 113 for c, attr in cmdtable.items():
126 f = c.split("|")[0] 114 f = c.split("|")[0]
131 119
132 for f in cmds: 120 for f in cmds:
133 if f.startswith("debug"): 121 if f.startswith("debug"):
134 continue 122 continue
135 d = get_cmd(h[f], cmdtable) 123 d = get_cmd(h[f], cmdtable)
136 sectionfunc(ui, d['cmd']) 124 ui.write(sectionfunc(d['cmd']))
137 # synopsis 125 # synopsis
138 ui.write("::\n\n") 126 ui.write("::\n\n")
139 synopsislines = d['synopsis'].splitlines() 127 synopsislines = d['synopsis'].splitlines()
140 for line in synopsislines: 128 for line in synopsislines:
141 # some commands (such as rebase) have a multi-line 129 # some commands (such as rebase) have a multi-line