1#!/usr/bin/python323"""4This script does all necessary pre-processing to convert scdoc format into5Markdown.67Usage:8 prepare_md.py < in > out9 prepare_md.py file1 file2 file310 Converts into _generated_file1.md, etc.11"""1213import sys14import re1516anchor_escape = str.maketrans(r' #()./\+-_', '__________')1718def prepare(r, w):19 new_lines = list()20 title = str()21 previous_h1_anchor = ''2223 inside_literal = False2425 for line in r:26 if not inside_literal:27 if line.startswith('; TITLE ') and title == '':28 title = line[8:]29 if line[0] == ';':30 continue31 # turn *page*(1) into [**page(1)**](../_generated_page.1)32 line = re.sub(r'\*(.+?)\*\(([0-9])\)', r'[*\1(\2)*](../_generated_\1.\2)', line)33 # *aaa* => **aaa**34 line = re.sub(r'\*(.+?)\*', r'**\1**', line)35 # remove ++ from line endings36 line = re.sub(r'\+\+$', '<br>', line)37 # turn whatever looks like a link into one38 line = re.sub(r'(https://[^ \)\(\\]+[a-z0-9_\-])', r'[\1](\1)', line)39 # escape underscores inside words40 line = re.sub(r'([^ ])_([^ ])', r'\1\\_\2', line)4142 if line.startswith('```'):43 inside_literal = not inside_literal4445 new_lines.append(line)4647 if title != '':48 print('#', title, file=w)4950 print(''.join(new_lines[1:]), file=w)5152if len(sys.argv) == 1:53 prepare(sys.stdin, sys.stdout)54else:55 for f in sys.argv[1:]:56 new_name = '_generated_' + f[:-4] + '.md'57 prepare(open(f, 'r'), open(new_name, 'w'))