[PATCH 4 of 6] hgweb: generate HTML documentation
Dan Villiom Podlaski Christiansen
danchr at gmail.com
Sat Feb 9 13:00:38 UTC 2013
# HG changeset patch
# User Dan Villiom Podlaski Christiansen <danchr at gmail.com>
# Date 1360414104 0
# Node ID 675a399c2c9d5c94d4798bc8fd11f855eaff5672
# Parent 03c9cfc461cce54da65f0ad0529a734181022b83
hgweb: generate HTML documentation
diff --git a/mercurial/help/templates.txt b/mercurial/help/templates.txt
--- a/mercurial/help/templates.txt
+++ b/mercurial/help/templates.txt
@@ -60,6 +60,8 @@ In addition to filters, there are some b
- sub(pat, repl, expr)
+- rstdoc(text, style)
+
Also, for any expression that returns a list, there is a list operator:
- expr % "{template}"
diff --git a/mercurial/hgweb/webcommands.py b/mercurial/hgweb/webcommands.py
--- a/mercurial/hgweb/webcommands.py
+++ b/mercurial/hgweb/webcommands.py
@@ -995,8 +995,7 @@ def help(web, req, tmpl):
u.pushbuffer()
u.verbose = True
try:
- commands.help_(u, topicname)
+ doc = helpmod.help_(u, topicname, indent=0)
except error.UnknownCommand:
raise ErrorResponse(HTTP_NOT_FOUND)
- doc = u.popbuffer()
return tmpl('help', topic=topicname, doc=doc)
diff --git a/mercurial/templater.py b/mercurial/templater.py
--- a/mercurial/templater.py
+++ b/mercurial/templater.py
@@ -9,6 +9,7 @@ from i18n import _
import sys, os, re
import util, config, templatefilters, parser, error
import types
+import minirst
# template parsing
@@ -287,6 +288,16 @@ def label(context, mapping, args):
t = stringify(args[1][0](context, mapping, args[1][1]))
yield runtemplate(context, mapping, compiletemplate(t, context))
+def rstdoc(context, mapping, args):
+ if len(args) != 2:
+ # i18n: "rstdoc" is a keyword
+ raise error.ParseError(_("rstdoc expects two arguments"))
+
+ text = stringify(args[0][0](context, mapping, args[0][1]))
+ style = stringify(args[1][0](context, mapping, args[1][1]))
+
+ return minirst.format(text, style=style)
+
methods = {
"string": lambda e, c: (runstring, e[1]),
"symbol": lambda e, c: (runsymbol, e[1]),
@@ -303,6 +314,7 @@ funcs = {
"ifeq": ifeq,
"join": join,
"label": label,
+ "rstdoc": rstdoc,
"sub": sub,
}
diff --git a/mercurial/templates/gitweb/help.tmpl b/mercurial/templates/gitweb/help.tmpl
--- a/mercurial/templates/gitweb/help.tmpl
+++ b/mercurial/templates/gitweb/help.tmpl
@@ -27,8 +27,8 @@ help
<div class="title"> </div>
-<pre>
-{doc|escape}
-</pre>
+<div id="doc">
+{rstdoc(doc, "html")}
+</div>
{footer}
diff --git a/mercurial/templates/monoblue/help.tmpl b/mercurial/templates/monoblue/help.tmpl
--- a/mercurial/templates/monoblue/help.tmpl
+++ b/mercurial/templates/monoblue/help.tmpl
@@ -31,8 +31,8 @@
</div>
<h2 class="no-link no-border">branches</h2>
- <pre>
- {doc|escape}
- </pre>
+ <div id="doc">
+ {rstdoc(doc, "html")}
+ </div>
{footer}
diff --git a/mercurial/templates/paper/help.tmpl b/mercurial/templates/paper/help.tmpl
--- a/mercurial/templates/paper/help.tmpl
+++ b/mercurial/templates/paper/help.tmpl
@@ -31,9 +31,9 @@
<div id="hint">find changesets by author, revision,
files, or words in the commit message</div>
</form>
-<pre>
-{doc|escape}
-</pre>
+<div id="doc">
+{rstdoc(doc, "html")}
+</div>
</div>
</div>
diff --git a/tests/test-hgweb-help.t b/tests/test-hgweb-help.t
--- a/tests/test-hgweb-help.t
+++ b/tests/test-hgweb-help.t
@@ -52,65 +52,105 @@ Dish up an empty repo; serve it cold.
<div id="hint">find changesets by author, revision,
files, or words in the commit message</div>
</form>
- <pre>
+ <div id="doc">
+ <p>
hg add [OPTION]... [FILE]...
+ </p>
+ <p>
+ add the specified files on the next commit
+ </p>
+ <p>
+ Schedule files to be version controlled and added to the
+ repository.
+ </p>
+ <p>
+ The files will be added to the repository at the next commit. To
+ undo an add before that, see "hg forget".
+ </p>
+ <p>
+ If no names are given, add all files to the repository.
+ </p>
+ <p>
+ Returns 0 if all files are successfully added.
+ </p>
+ <p>
+ options:
+ </p>
+ <table>
+ <tr><td>-I</td>
+ <td>--include PATTERN [+]</td>
+ <td>include names matching the given patterns</td></tr>
+ <tr><td>-X</td>
+ <td>--exclude PATTERN [+]</td>
+ <td>exclude names matching the given patterns</td></tr>
+ <tr><td>-S</td>
+ <td>--subrepos</td>
+ <td>recurse into subrepositories</td></tr>
+ <tr><td>-n</td>
+ <td>--dry-run</td>
+ <td>do not perform actions, just print output</td></tr>
+ </table>
+ <p>
+ [+] marked option can be specified multiple times
+ </p>
+ <p>
+ global options:
+ </p>
+ <table>
+ <tr><td>-R</td>
+ <td>--repository REPO</td>
+ <td>repository root directory or name of overlay bundle file</td></tr>
+ <tr><td></td>
+ <td>--cwd DIR</td>
+ <td>change working directory</td></tr>
+ <tr><td>-y</td>
+ <td>--noninteractive</td>
+ <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
+ <tr><td>-q</td>
+ <td>--quiet</td>
+ <td>suppress output</td></tr>
+ <tr><td>-v</td>
+ <td>--verbose</td>
+ <td>enable additional output</td></tr>
+ <tr><td></td>
+ <td>--config CONFIG [+]</td>
+ <td>set/override config option (use 'section.name=value')</td></tr>
+ <tr><td></td>
+ <td>--debug</td>
+ <td>enable debugging output</td></tr>
+ <tr><td></td>
+ <td>--debugger</td>
+ <td>start debugger</td></tr>
+ <tr><td></td>
+ <td>--encoding ENCODE</td>
+ <td>set the charset encoding (default: ascii)</td></tr>
+ <tr><td></td>
+ <td>--encodingmode MODE</td>
+ <td>set the charset encoding mode (default: strict)</td></tr>
+ <tr><td></td>
+ <td>--traceback</td>
+ <td>always print a traceback on exception</td></tr>
+ <tr><td></td>
+ <td>--time</td>
+ <td>time how long the command takes</td></tr>
+ <tr><td></td>
+ <td>--profile</td>
+ <td>print command execution profile</td></tr>
+ <tr><td></td>
+ <td>--version</td>
+ <td>output version information and exit</td></tr>
+ <tr><td>-h</td>
+ <td>--help</td>
+ <td>display help and exit</td></tr>
+ <tr><td></td>
+ <td>--hidden</td>
+ <td>consider hidden changesets</td></tr>
+ </table>
+ <p>
+ [+] marked option can be specified multiple times
+ </p>
- add the specified files on the next commit
-
- Schedule files to be version controlled and added to the repository.
-
- The files will be added to the repository at the next commit. To undo an
- add before that, see "hg forget".
-
- If no names are given, add all files to the repository.
-
- An example showing how new (unknown) files are added automatically by "hg
- add":
-
- $ ls
- foo.c
- $ hg status
- ? foo.c
- $ hg add
- adding foo.c
- $ hg status
- A foo.c
-
- Returns 0 if all files are successfully added.
-
- options:
-
- -I --include PATTERN [+] include names matching the given patterns
- -X --exclude PATTERN [+] exclude names matching the given patterns
- -S --subrepos recurse into subrepositories
- -n --dry-run do not perform actions, just print output
-
- [+] marked option can be specified multiple times
-
- global options:
-
- -R --repository REPO repository root directory or name of overlay bundle
- file
- --cwd DIR change working directory
- -y --noninteractive do not prompt, automatically pick the first choice for
- all prompts
- -q --quiet suppress output
- -v --verbose enable additional output
- --config CONFIG [+] set/override config option (use 'section.name=value')
- --debug enable debugging output
- --debugger start debugger
- --encoding ENCODE set the charset encoding (default: ascii)
- --encodingmode MODE set the charset encoding mode (default: strict)
- --traceback always print a traceback on exception
- --time time how long the command takes
- --profile print command execution profile
- --version output version information and exit
- -h --help display help and exit
- --hidden consider hidden changesets
-
- [+] marked option can be specified multiple times
-
- </pre>
+ </div>
</div>
</div>
@@ -164,74 +204,105 @@ Dish up an empty repo; serve it cold.
<div id="hint">find changesets by author, revision,
files, or words in the commit message</div>
</form>
- <pre>
+ <div id="doc">
+ <p>
hg remove [OPTION]... FILE...
+ </p>
+ <p>
+ aliases: rm
+ </p>
+ <p>
+ remove the specified files on the next commit
+ </p>
+ <p>
+ Schedule the indicated files for removal from the current branch.
+ </p>
+ <p>
+ This command schedules the files to be removed at the next commit.
+ To undo a remove before that, see "hg revert". To undo added
+ files, see "hg forget".
+ </p>
+ <p>
+ Returns 0 on success, 1 if any warnings encountered.
+ </p>
+ <p>
+ options:
+ </p>
+ <table>
+ <tr><td>-A</td>
+ <td>--after</td>
+ <td>record delete for missing files</td></tr>
+ <tr><td>-f</td>
+ <td>--force</td>
+ <td>remove (and delete) file even if added or modified</td></tr>
+ <tr><td>-I</td>
+ <td>--include PATTERN [+]</td>
+ <td>include names matching the given patterns</td></tr>
+ <tr><td>-X</td>
+ <td>--exclude PATTERN [+]</td>
+ <td>exclude names matching the given patterns</td></tr>
+ </table>
+ <p>
+ [+] marked option can be specified multiple times
+ </p>
+ <p>
+ global options:
+ </p>
+ <table>
+ <tr><td>-R</td>
+ <td>--repository REPO</td>
+ <td>repository root directory or name of overlay bundle file</td></tr>
+ <tr><td></td>
+ <td>--cwd DIR</td>
+ <td>change working directory</td></tr>
+ <tr><td>-y</td>
+ <td>--noninteractive</td>
+ <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
+ <tr><td>-q</td>
+ <td>--quiet</td>
+ <td>suppress output</td></tr>
+ <tr><td>-v</td>
+ <td>--verbose</td>
+ <td>enable additional output</td></tr>
+ <tr><td></td>
+ <td>--config CONFIG [+]</td>
+ <td>set/override config option (use 'section.name=value')</td></tr>
+ <tr><td></td>
+ <td>--debug</td>
+ <td>enable debugging output</td></tr>
+ <tr><td></td>
+ <td>--debugger</td>
+ <td>start debugger</td></tr>
+ <tr><td></td>
+ <td>--encoding ENCODE</td>
+ <td>set the charset encoding (default: ascii)</td></tr>
+ <tr><td></td>
+ <td>--encodingmode MODE</td>
+ <td>set the charset encoding mode (default: strict)</td></tr>
+ <tr><td></td>
+ <td>--traceback</td>
+ <td>always print a traceback on exception</td></tr>
+ <tr><td></td>
+ <td>--time</td>
+ <td>time how long the command takes</td></tr>
+ <tr><td></td>
+ <td>--profile</td>
+ <td>print command execution profile</td></tr>
+ <tr><td></td>
+ <td>--version</td>
+ <td>output version information and exit</td></tr>
+ <tr><td>-h</td>
+ <td>--help</td>
+ <td>display help and exit</td></tr>
+ <tr><td></td>
+ <td>--hidden</td>
+ <td>consider hidden changesets</td></tr>
+ </table>
+ <p>
+ [+] marked option can be specified multiple times
+ </p>
- aliases: rm
-
- remove the specified files on the next commit
-
- Schedule the indicated files for removal from the current branch.
-
- This command schedules the files to be removed at the next commit. To undo
- a remove before that, see "hg revert". To undo added files, see "hg
- forget".
-
- -A/--after can be used to remove only files that have already been
- deleted, -f/--force can be used to force deletion, and -Af can be used to
- remove files from the next revision without deleting them from the working
- directory.
-
- The following table details the behavior of remove for different file
- states (columns) and option combinations (rows). The file states are Added
- [A], Clean [C], Modified [M] and Missing [!] (as reported by "hg status").
- The actions are Warn, Remove (from branch) and Delete (from disk):
-
- A C M !
- --------------
- none W RD W R
- -f R RD RD R
- -A W W W R
- -Af R R R R
-
- Note that remove never deletes files in Added [A] state from the working
- directory, not even if option --force is specified.
-
- Returns 0 on success, 1 if any warnings encountered.
-
- options:
-
- -A --after record delete for missing files
- -f --force remove (and delete) file even if added or modified
- -I --include PATTERN [+] include names matching the given patterns
- -X --exclude PATTERN [+] exclude names matching the given patterns
-
- [+] marked option can be specified multiple times
-
- global options:
-
- -R --repository REPO repository root directory or name of overlay bundle
- file
- --cwd DIR change working directory
- -y --noninteractive do not prompt, automatically pick the first choice for
- all prompts
- -q --quiet suppress output
- -v --verbose enable additional output
- --config CONFIG [+] set/override config option (use 'section.name=value')
- --debug enable debugging output
- --debugger start debugger
- --encoding ENCODE set the charset encoding (default: ascii)
- --encodingmode MODE set the charset encoding mode (default: strict)
- --traceback always print a traceback on exception
- --time time how long the command takes
- --profile print command execution profile
- --version output version information and exit
- -h --help display help and exit
- --hidden consider hidden changesets
-
- [+] marked option can be specified multiple times
-
- </pre>
+ </div>
</div>
</div>
@@ -285,38 +356,50 @@ Dish up an empty repo; serve it cold.
<div id="hint">find changesets by author, revision,
files, or words in the commit message</div>
</form>
- <pre>
- Specifying Single Revisions
+ <div id="doc">
+ <table>
+ <tr><td>Specifying Single Revisions</td></tr>
+ </table>
+ <p>
+ Mercurial supports several ways to specify individual revisions.
+ </p>
+ <p>
+ A plain integer is treated as a revision number. Negative integers are
+ treated as sequential offsets from the tip, with -1 denoting the tip,
+ -2 denoting the revision prior to the tip, and so forth.
+ </p>
+ <p>
+ A 40-digit hexadecimal string is treated as a unique revision
+ identifier.
+ </p>
+ <p>
+ A hexadecimal string less than 40 characters long is treated as a
+ unique revision identifier and is referred to as a short-form
+ identifier. A short-form identifier is only valid if it is the prefix
+ of exactly one full-length identifier.
+ </p>
+ <p>
+ Any other string is treated as a bookmark, tag, or branch name. A
+ bookmark is a movable pointer to a revision. A tag is a permanent name
+ associated with a revision. A branch name denotes the tipmost revision
+ of that branch. Bookmark, tag, and branch names must not contain the ":"
+ character.
+ </p>
+ <p>
+ The reserved name "tip" always identifies the most recent revision.
+ </p>
+ <p>
+ The reserved name "null" indicates the null revision. This is the
+ revision of an empty repository, and the parent of revision 0.
+ </p>
+ <p>
+ The reserved name "." indicates the working directory parent. If no
+ working directory is checked out, it is equivalent to null. If an
+ uncommitted merge is in progress, "." is the revision of the first
+ parent.
+ </p>
- Mercurial supports several ways to specify individual revisions.
-
- A plain integer is treated as a revision number. Negative integers are
- treated as sequential offsets from the tip, with -1 denoting the tip, -2
- denoting the revision prior to the tip, and so forth.
-
- A 40-digit hexadecimal string is treated as a unique revision identifier.
-
- A hexadecimal string less than 40 characters long is treated as a unique
- revision identifier and is referred to as a short-form identifier. A
- short-form identifier is only valid if it is the prefix of exactly one
- full-length identifier.
-
- Any other string is treated as a bookmark, tag, or branch name. A bookmark
- is a movable pointer to a revision. A tag is a permanent name associated
- with a revision. A branch name denotes the tipmost revision of that
- branch. Bookmark, tag, and branch names must not contain the ":"
- character.
-
- The reserved name "tip" always identifies the most recent revision.
-
- The reserved name "null" indicates the null revision. This is the revision
- of an empty repository, and the parent of revision 0.
-
- The reserved name "." indicates the working directory parent. If no
- working directory is checked out, it is equivalent to null. If an
- uncommitted merge is in progress, "." is the revision of the first parent.
-
- </pre>
+ </div>
</div>
</div>
More information about the Mercurial-devel
mailing list