[doc] add `.t` to `.rst` converteur
authorPierre-Yves.David@ens-lyon.org
Wed, 09 May 2012 22:55:58 +0200
changeset 235 8469ccb9550f
parent 234 d32c07269dcd
child 236 5236927419bf
[doc] add `.t` to `.rst` converteur Update make file accordingly.
docs/makefile
docs/test2rst.py
--- a/docs/makefile	Wed May 09 22:29:16 2012 +0200
+++ b/docs/makefile	Wed May 09 22:55:58 2012 +0200
@@ -3,4 +3,4 @@
 	sphinx-build . html/
 
 tutorial:
-	cp tutorials/tutorial.t tutorials/tutorial.rst
+	python test2rst.py tutorials/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/test2rst.py	Wed May 09 22:55:58 2012 +0200
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+
+import os, os.path as op, re, sys
+
+# line starts with two chars one of which is not a space (and both are not
+# newlines obviously) and ends with one or more newlines followed by two spaces
+# on a next line (indented text)
+CODEBLOCK = re.compile(r'()\n(([^ \n][^\n]|[^\n][^ \n])[^\n]*)\n+  ')
+
+INDEX = '''
+Mercurial tests
+===============
+
+.. toctree::
+   :maxdepth: 1
+'''
+
+
+def rstify(orig, name):
+    header = '%s\n%s\n\n' % (name, '=' * len(name))
+    content = header + orig
+    content = CODEBLOCK.sub(r'\n\1\n\n::\n\n  ', content)
+    return content
+
+
+def main(base):
+    if os.path.isdir(base):
+        one_dir(base)
+    else:
+        print one_file(base)
+
+
+def one_dir(base):
+    index = INDEX
+    #doc = lambda x: op.join(op.dirname(__file__), 'docs', x)
+
+    for fn in sorted(os.listdir(base)):
+        if not fn.endswith('.t'):
+            continue
+        print fn
+        name = os.path.splitext(fn)[0]
+        content = one_file(op.join(base, fn))
+        target = op.join(base, name + '.rst')
+        #with file(doc(name + '.rst'), 'w') as f:
+        with file(target, 'w') as f:
+            f.write(content)
+        print f
+
+        index += '\n   ' + name
+
+    #with file(doc('index.rst'), 'w') as f:
+    #    f.write(index)
+
+
+def one_file(path):
+    name = os.path.basename(path)[:-2]
+    return rstify(file(path).read(), name)
+
+
+if __name__ == '__main__':
+    if len(sys.argv) != 2:
+        print 'Please supply a path to tests dir as parameter'
+        sys.exit()
+    main(sys.argv[1])