From: Vladimír Vondruš Date: Tue, 4 Jul 2017 09:22:39 +0000 (+0200) Subject: plugins: reST roles for linking to GL symbols and extensions. X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~cjwatson/git?a=commitdiff_plain;h=fa2ba7cf44576c1401252b3b91b7ff00b4e514d4;p=blog.git plugins: reST roles for linking to GL symbols and extensions. --- diff --git a/pelican-plugins/m/gl.py b/pelican-plugins/m/gl.py new file mode 100644 index 00000000..56018eda --- /dev/null +++ b/pelican-plugins/m/gl.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python + +from . import parse_link +from docutils import nodes, utils +from docutils.parsers import rst + +def glext(name, rawtext, text, lineno, inliner, options={}, content=[]): + title, extension = parse_link(text) + if not title: title = extension + prefix = extension.partition('_')[0] + url = "https://www.khronos.org/registry/OpenGL/extensions/{}/{}.txt".format(prefix, extension) + node = nodes.reference(rawtext, title, refuri=url, **options) + return [node], [] + +def glfn(name, rawtext, text, lineno, inliner, options={}, content=[]): + title, fn = parse_link(text) + if not title: title = "gl{}()".format(fn) + url = "https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/gl{}.xhtml".format(name) + node = nodes.reference(rawtext, title, refuri=url, **options) + return [node], [] + +def glfnext(name, rawtext, text, lineno, inliner, options={}, content=[]): + title, extension = parse_link(text) + prefix = extension.partition('_')[0] + url = "https://www.khronos.org/registry/OpenGL/extensions/{}/{}.txt".format(prefix, extension) + node = nodes.reference(rawtext, "gl" + title + prefix + "()", refuri=url, **options) + return [node], [] + +def register(): + rst.roles.register_local_role('glext', glext) + rst.roles.register_local_role('glfn', glfn) + rst.roles.register_local_role('glfnext', glfnext)