From fa2ba7cf44576c1401252b3b91b7ff00b4e514d4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 4 Jul 2017 11:22:39 +0200 Subject: [PATCH] plugins: reST roles for linking to GL symbols and extensions. --- pelican-plugins/m/gl.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 pelican-plugins/m/gl.py 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) -- 2.30.2