diff options
Diffstat (limited to 'docs/_exts')
-rw-r--r-- | docs/_exts/formatting.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/docs/_exts/formatting.py b/docs/_exts/formatting.py index cc6c471f117..c7322d47a58 100644 --- a/docs/_exts/formatting.py +++ b/docs/_exts/formatting.py @@ -6,6 +6,9 @@ import docutils.nodes import sphinx.addnodes +from sphinx.util.nodes import split_explicit_title +from docutils import nodes, utils + def parse_envvar(env, sig, signode): envvar, t, default = sig.split(" ", 2) envvar = envvar.strip().upper() @@ -26,8 +29,25 @@ def parse_opcode(env, sig, signode): signode += sphinx.addnodes.desc_annotation(desc, desc) return opcode + +def ext_role(name, rawtext, text, lineno, inliner, options={}, content=[]): + text = utils.unescape(text) + has_explicit_title, title, ext = split_explicit_title(text) + + parts = ext.split('_', 2) + if parts[0] == 'VK': + full_url = f'https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/{ext}.html' + elif parts[0] == 'GL': + full_url = f'https://registry.khronos.org/OpenGL/extensions/{parts[1]}/{parts[1]}_{parts[2]}.txt' + else: + raise Exception(f'Unexpected API: {parts[0]}') + + pnode = nodes.reference(title, title, internal=False, refuri=full_url) + return [pnode], [] + def setup(app): app.add_object_type("envvar", "envvar", "%s (environment variable)", parse_envvar) app.add_object_type("opcode", "opcode", "%s (TGSI opcode)", parse_opcode) + app.add_role('ext', ext_role) |