annotate doc/runrst @ 13294:98f0adfc89e3

record: simplify header methods with util.any
author Patrick Mezard <pmezard@gmail.com>
date Sun, 23 Jan 2011 15:21:56 +0100
parents 13d79a7bf5b7
children 1ae824142c01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10971
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
1 #!/usr/bin/env python
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
2 #
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
3 # runrst - register custom roles and run correct writer
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
4 #
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
5 # Copyright 2010 Matt Mackall <mpm@selenic.com> and others
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
6 #
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
7 # This software may be used and distributed according to the terms of the
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
8 # GNU General Public License version 2 or any later version.
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
9
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
10 """usage: %s WRITER args...
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
11
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
12 where WRITER is the name of a Docutils writer such as 'html' or 'manpage'
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
13 """
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
14
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
15 import sys
11707
13d79a7bf5b7 runrst: try to be more helpful if docutils is not installed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10974
diff changeset
16 try:
13d79a7bf5b7 runrst: try to be more helpful if docutils is not installed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10974
diff changeset
17 from docutils.parsers.rst import roles
13d79a7bf5b7 runrst: try to be more helpful if docutils is not installed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10974
diff changeset
18 from docutils.core import publish_cmdline
13d79a7bf5b7 runrst: try to be more helpful if docutils is not installed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10974
diff changeset
19 from docutils import nodes, utils
13d79a7bf5b7 runrst: try to be more helpful if docutils is not installed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10974
diff changeset
20 except ImportError:
13d79a7bf5b7 runrst: try to be more helpful if docutils is not installed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10974
diff changeset
21 sys.stderr.write("abort: couldn't generate documentation: docutils "
13d79a7bf5b7 runrst: try to be more helpful if docutils is not installed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10974
diff changeset
22 "module is missing\n")
13d79a7bf5b7 runrst: try to be more helpful if docutils is not installed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10974
diff changeset
23 sys.exit(-1)
10972
0a2c6948f5f4 doc, minirst: support hg interpreted text role
Martin Geisler <mg@aragost.com>
parents: 10971
diff changeset
24
0a2c6948f5f4 doc, minirst: support hg interpreted text role
Martin Geisler <mg@aragost.com>
parents: 10971
diff changeset
25 def role_hg(name, rawtext, text, lineno, inliner,
0a2c6948f5f4 doc, minirst: support hg interpreted text role
Martin Geisler <mg@aragost.com>
parents: 10971
diff changeset
26 options={}, content=[]):
10974
854ac04d712c doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents: 10972
diff changeset
27 text = "hg " + utils.unescape(text)
854ac04d712c doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents: 10972
diff changeset
28 linktext = nodes.literal(rawtext, text)
854ac04d712c doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents: 10972
diff changeset
29 parts = text.split()
854ac04d712c doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents: 10972
diff changeset
30 cmd, args = parts[1], parts[2:]
854ac04d712c doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents: 10972
diff changeset
31 if cmd == 'help' and args:
854ac04d712c doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents: 10972
diff changeset
32 cmd = args[0] # link to 'dates' for 'hg help dates'
854ac04d712c doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents: 10972
diff changeset
33 node = nodes.reference(rawtext, '', linktext,
854ac04d712c doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents: 10972
diff changeset
34 refuri="hg.1.html#%s" % cmd)
10972
0a2c6948f5f4 doc, minirst: support hg interpreted text role
Martin Geisler <mg@aragost.com>
parents: 10971
diff changeset
35 return [node], []
0a2c6948f5f4 doc, minirst: support hg interpreted text role
Martin Geisler <mg@aragost.com>
parents: 10971
diff changeset
36
0a2c6948f5f4 doc, minirst: support hg interpreted text role
Martin Geisler <mg@aragost.com>
parents: 10971
diff changeset
37 roles.register_local_role("hg", role_hg)
10971
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
38
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
39 if __name__ == "__main__":
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
40 if len(sys.argv) < 2:
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
41 sys.stderr.write(__doc__ % sys.argv[0])
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
42 sys.exit(1)
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
43
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
44 writer = sys.argv[1]
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
45 del sys.argv[1]
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
46
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
47 publish_cmdline(writer_name=writer)