changeset 235:8469ccb9550f

[doc] add `.t` to `.rst` converteur Update make file accordingly.
author Pierre-Yves.David@ens-lyon.org
date Wed, 09 May 2012 22:55:58 +0200
parents d32c07269dcd
children 5236927419bf
files docs/makefile docs/test2rst.py
diffstat 2 files changed, 65 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/docs/makefile
+++ b/docs/makefile
@@ -3,4 +3,4 @@
 	sphinx-build . html/
 
 tutorial:
-	cp tutorials/tutorial.t tutorials/tutorial.rst
+	python test2rst.py tutorials/
new file mode 100644
--- /dev/null
+++ b/docs/test2rst.py
@@ -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])