#!/usr/bin/env python3 import fileinput def printf(string): print(string,end='') def convert(line): """Convert a string to a list of tuples, each a token""" # TODO: preserve the lack of whitespace before a backslash. split = line.replace('\\', ' \\').split() out = '' if len(split) == 0: return out elif split[0] in ['\\mt1','\\mt','\\ms']: return '\n# ' + ' '.join(split[1:]) # TODO: parse as word for title tags in title line elif split[0] in ['\\mt2','\\s']: return '\n## ' + ' '.join(split[1:]) elif split[0] in ['\\mt3']: return '\n### ' + ' '.join(split[1:]) elif split[0] == '\\b': return '\n' elif split[0] == '\\rem': return out skip = 0 for word in split: if skip > 0: skip = skip - 1 continue if word in ['\\v', '\\c']: skip = 1 elif word in ['\\p','\\m']: out += '\n' elif word in ['\\q']: out += '\n> ' elif word in ['\\wj','\\wj*']: continue else: out += word + ' ' return out def main(): """Read usfm from stdin, output gemtext to stdout ./usfm2gmi out.md """ for line in fileinput.input(): gmi = convert(line) printf(gmi) if __name__ == '__main__': main()