aboutsummaryrefslogtreecommitdiff
path: root/python/docs/epytext.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/docs/epytext.py')
-rw-r--r--python/docs/epytext.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/python/docs/epytext.py b/python/docs/epytext.py
new file mode 100644
index 0000000000..61d731bff5
--- /dev/null
+++ b/python/docs/epytext.py
@@ -0,0 +1,27 @@
+import re
+
+RULES = (
+ (r"<[\w.]+>", r""),
+ (r"L{([\w.()]+)}", r":class:`\1`"),
+ (r"[LC]{(\w+\.\w+)\(\)}", r":func:`\1`"),
+ (r"C{([\w.()]+)}", r":class:`\1`"),
+ (r"[IBCM]{(.+)}", r"`\1`"),
+ ('pyspark.rdd.RDD', 'RDD'),
+)
+
+def _convert_epytext(line):
+ """
+ >>> _convert_epytext("L{A}")
+ :class:`A`
+ """
+ line = line.replace('@', ':')
+ for p, sub in RULES:
+ line = re.sub(p, sub, line)
+ return line
+
+def _process_docstring(app, what, name, obj, options, lines):
+ for i in range(len(lines)):
+ lines[i] = _convert_epytext(lines[i])
+
+def setup(app):
+ app.connect("autodoc-process-docstring", _process_docstring)