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 += sphinx.addnodes.desc_type(t, t)
16    signode += sphinx.addnodes.desc_annotation(default, default)
17    return envvar
18
19def parse_opcode(env, sig, signode):
20    opcode, desc = sig.split("-", 1)
21    opcode = opcode.strip().upper()
22    desc = " (%s)" % desc.strip()
23    signode += sphinx.addnodes.desc_name(opcode, opcode)
24    signode += sphinx.addnodes.desc_annotation(desc, desc)
25    return opcode
26
27def setup(app):
28    app.add_description_unit("envvar", "envvar", "%s (environment variable)",
29        parse_envvar)
30    app.add_description_unit("opcode", "opcode", "%s (TGSI opcode)",
31        parse_opcode)
32