From 99058c1f1d4dadb37b6189729e2e143590d2ff8b Mon Sep 17 00:00:00 2001 From: Gareth Coles Date: Tue, 10 Apr 2018 20:45:02 +0100 Subject: Wiki page text role --- pysite/rst/roles.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'pysite/rst/roles.py') diff --git a/pysite/rst/roles.py b/pysite/rst/roles.py index 414832df..3d0155e0 100644 --- a/pysite/rst/roles.py +++ b/pysite/rst/roles.py @@ -81,3 +81,39 @@ def url_for_role(_role: str, rawtext: str, text: str, lineno: int, inliner: Inli prb = inliner.problematic(text, rawtext, msg) return [prb], [msg] + + +def page_role(_role: str, rawtext: str, text: str, lineno: int, inliner: Inliner, + options: dict = None, _content: dict = None): + if options is None: + options = {} + + set_classes(options) + + if "/" in text: + parts = [escape(x) for x in text.split("/")] + else: + msg = inliner.reporter.error("Page specification must be in the form /", line=lineno) + prb = inliner.problematic(text, rawtext, msg) + + return [prb], [msg] + + if len(parts) != 2: + msg = inliner.reporter.error("Page specification must be in the form /", line=lineno) + prb = inliner.problematic(text, rawtext, msg) + + return [prb], [msg] + else: + try: + url = url_for("wiki.page", page=parts[0]) + name = parts[1] + + html = f"""{name}""" + + node = nodes.raw(html, html, format="html", **options) + return [node], [] + except Exception as e: + msg = inliner.reporter.error(str(e), line=lineno) + prb = inliner.problematic(text, rawtext, msg) + + return [prb], [msg] -- cgit v1.2.3 From 69588db71933d8a6feb34819ae6969bc5119d888 Mon Sep 17 00:00:00 2001 From: Gareth Coles Date: Tue, 10 Apr 2018 20:47:32 +0100 Subject: Whoops, Flake8 --- pysite/rst/roles.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pysite/rst/roles.py') diff --git a/pysite/rst/roles.py b/pysite/rst/roles.py index 3d0155e0..10f14603 100644 --- a/pysite/rst/roles.py +++ b/pysite/rst/roles.py @@ -84,7 +84,7 @@ def url_for_role(_role: str, rawtext: str, text: str, lineno: int, inliner: Inli def page_role(_role: str, rawtext: str, text: str, lineno: int, inliner: Inliner, - options: dict = None, _content: dict = None): + options: dict = None, _content: dict = None): if options is None: options = {} -- cgit v1.2.3