1# formatting.py
2# Sphinx extension providing formatting for Gallium-specific data
3# (c) Corbin Simpson 2010
4# Public domain to the extent permitted; contact author for special licensing
5
6import docutils.nodes
7import sphinx.addnodes
8
9def parse_envvar(env, sig, signode):
10    envvar, t, default = sig.split(" ", 2)
11    envvar = envvar.strip().upper()
12    t = "Type: %s" % t.strip(" <>").lower()
13    default = "Default: %s" % default.strip(" ()")
14    signode += sphinx.addnodes.desc_name(envvar, envvar)
15    signode += docutils.nodes.Text(' ')
16    signode += sphinx.addnodes.desc_type(t, t)
17    signode += docutils.nodes.Text(', ')
18    signode += sphinx.addnodes.desc_annotation(default, default)
19    return envvar
20
21def parse_opcode(env, sig, signode):
22    opcode, desc = sig.split("-", 1)
23    opcode = opcode.strip().upper()
24    desc = " (%s)" % desc.strip()
25    signode += sphinx.addnodes.desc_name(opcode, opcode)
26    signode += sphinx.addnodes.desc_annotation(desc, desc)
27    return opcode
28
29def setup(app):
30    app.add_object_type("envvar", "envvar", "%s (environment variable)",
31        parse_envvar)
32    app.add_object_type("opcode", "opcode", "%s (TGSI opcode)",
33        parse_opcode)
34