]> git.xonotic.org Git - xonotic/xonotic.wiki.git/blobdiff - assets/convert-wiki-links.py
change wiki link syntax to markdown -- no redlinks, dang, GitLab...
[xonotic/xonotic.wiki.git] / assets / convert-wiki-links.py
diff --git a/assets/convert-wiki-links.py b/assets/convert-wiki-links.py
new file mode 100755 (executable)
index 0000000..9479bae
--- /dev/null
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# not a simple sed script because I can do non-greedy easier here :x
+
+# changing gollum/wiki links to markdown/markup syntax (no redlinks support... fuuu gitlab)
+# but not the other way around...
+# since external links and images are better left using portable markdown syntax
+
+import os
+import re
+
+FILES = ('.md',)
+RX = [
+#      (re.compile(r''), ''),
+       # I'm sure this could be cleaner... but it works (order is important (with \W for french chars), or [[a|b]] is matched to [a|b](a|b) !)
+       (re.compile(r'(?u)\[\[([\w\W \\/\.#\(\)_-]+?)\|([\w\W \\/\.#\(\)_-]+?)\]\]'), r'[\1](\2)'), # [[This|that#top]] -> [This](that#top)
+       (re.compile(r'(?u)\[\[([\w\W \\/\.#\(\)_-]+?)\]\]'), r'[\1](\1)'), # [[This]] -> [This](This)
+]
+
+path = '.'
+lsdir = os.listdir(path)
+for f in lsdir:
+       file_name, file_extension = os.path.splitext(f)
+       new_f = file_name + file_extension + '.rx'
+
+       if file_extension in FILES:
+               i = os.path.join(path, f)
+               o = os.path.join(path, new_f)
+               with open(i, "r") as inf, open(o, "w") as outf:
+                       for line in inf:
+                               for search, replace in RX:
+                                       #line = search.sub(replace, line)
+                                       line = re.sub(search, replace, line)
+                               outf.write(line)
+               os.rename(o, i)