Mercurial > evolve
view docs/test2rst.py @ 5660:9d6c3e227455 stable
test2rst: use python3
Seems to just work, no porting necessary.
To sanity-check the script, I've used some non-ascii symbols in the .t files
(utf-8) and things worked fine.
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Mon, 09 Nov 2020 23:10:06 +0800 |
parents | 5ea837c515d9 |
children | 1d80cda7fe93 |
line wrap: on
line source
#!/usr/bin/env python3 import os import re import sys ignored_patterns = [ re.compile(r'^#if'), re.compile(r'^#else'), re.compile(r'^#endif'), re.compile(r'#rest-ignore$'), ] def rstify(orig): newlines = [] code_block_mode = False sphinx_directive_mode = False for line in orig.splitlines(): # Emtpy lines doesn't change output if not line: newlines.append(line) code_block_mode = False sphinx_directive_mode = False continue ignored = False for pattern in ignored_patterns: if pattern.search(line): ignored = True break if ignored: continue # Sphinx directives mode if line.startswith(' .. '): # Insert a empty line to makes sphinx happy newlines.append("") # And unindent the directive line = line[2:] sphinx_directive_mode = True # Code mode codeline = line.startswith(' ') if codeline and not sphinx_directive_mode: if code_block_mode is False: newlines.extend(['::', '']) code_block_mode = True newlines.append(line) return "\n".join(newlines) def main(path): with open(path) as f: content = f.read() rst = rstify(content) target = os.path.splitext(path)[0] + '.rst' with open(target, 'w') as f: f.write(rst) if __name__ == '__main__': if len(sys.argv) != 2: print('Please supply a path to tests dir as parameter') sys.exit() main(sys.argv[1])