[PATCH 4 of 6] hgweb: generate HTML documentation
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Sat Feb 9 07:59:50 CST 2013
On Sat, Feb 09, 2013 at 01:00:38PM +0000, Dan Villiom Podlaski Christiansen wrote:
> # 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()
extra pushbuffer call
> 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()
while popbuffer have been removed (context manager anyone :-()
> 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>
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list