Mercurial > public > mercurial-scm > hg
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 |