aboutsummaryrefslogtreecommitdiffstats
path: root/pysite/rst/roles.py
diff options
context:
space:
mode:
Diffstat (limited to 'pysite/rst/roles.py')
-rw-r--r--pysite/rst/roles.py125
1 files changed, 0 insertions, 125 deletions
diff --git a/pysite/rst/roles.py b/pysite/rst/roles.py
deleted file mode 100644
index d83f07f9..00000000
--- a/pysite/rst/roles.py
+++ /dev/null
@@ -1,125 +0,0 @@
-from docutils import nodes
-from docutils.parsers.rst.roles import set_classes
-from docutils.parsers.rst.states import Inliner
-from flask import url_for
-from jinja2 import escape
-
-
-def icon_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("Icon specification must be in the form <type>/<name>", line=lineno)
- prb = inliner.problematic(text, rawtext, msg)
-
- return [prb], [msg]
-
- if len(parts) != 2:
- msg = inliner.reporter.error("Icon specification must be in the form <type>/<name>", line=lineno)
- prb = inliner.problematic(text, rawtext, msg)
-
- return [prb], [msg]
- else:
- if parts[0] == "light":
- weight = "fal"
- elif parts[0] == "regular":
- weight = "far"
- elif parts[0] == "solid":
- weight = "fas"
- elif parts[0] == "branding":
- weight = "fab"
- else:
- msg = inliner.reporter.error("Icon type must be one of light, regular, solid or branding", line=lineno)
- prb = inliner.problematic(text, rawtext, msg)
-
- return [prb], [msg]
-
- html = f"""<i class="uk-icon fa-fw {weight} fa-{parts[1]}"></i>"""
-
- node = nodes.raw(html, html, format="html", **options)
- return [node], []
-
-
-def url_for_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("URL specification must be in the form <page.name>/<text>", line=lineno)
- prb = inliner.problematic(text, rawtext, msg)
-
- return [prb], [msg]
-
- if len(parts) != 2:
- msg = inliner.reporter.error("URL specification must be in the form <page.name>/<text>", line=lineno)
- prb = inliner.problematic(text, rawtext, msg)
-
- return [prb], [msg]
- else:
- try:
- url = url_for(parts[0])
- name = parts[1]
-
- html = f"""<a href="{url}">{name}</a>"""
-
- 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]
-
-
-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.rsplit("/", 1)]
- else:
- msg = inliner.reporter.error("Page specification must be in the form <page_slug>/<text>", line=lineno)
- prb = inliner.problematic(text, rawtext, msg)
-
- return [prb], [msg]
-
- try:
- url = url_for("wiki.page", page=parts[0])
- name = parts[1]
-
- html = f"""<a href="{url}">{name}</a>"""
-
- 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]
-
-
-def fira_code_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)
-
- html = f"""<span class="fira-code">{text}</span>"""
- node = nodes.raw(html, html, format="html", **options)
-
- return [node], []