diff options
Diffstat (limited to 'man')
-rw-r--r-- | man/make_man_page.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/man/make_man_page.py b/man/make_man_page.py new file mode 100644 index 0000000..526a717 --- /dev/null +++ b/man/make_man_page.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python + +# Creates a man page from a C file. +# Lines beginning with /// are treated as Markdown. +# Non-blank lines immediately following a /// line are treated +# as function signatures or examples and included verbatim. +# That's about it! + +import sys +import re + +special_comment_re = re.compile('\/\/\/'); +blank_re = re.compile('^\s*$'); + +mdlines = [] + +with open('../src/cmark.h', 'r') as cmarkh: + state = 'default' + for line in cmarkh: + # state transition + oldstate = state + if special_comment_re.match(line): + state = 'markdown' + elif blank_re.match(line): + state = 'default' + elif state == 'markdown': + state = 'signature' + + # handle line + if oldstate != state and len(mdlines) > 0 and mdlines[-1] != '\n': + mdlines.append('\n') + if state == 'markdown': + mdlines.append(line[4:]) + elif state == 'signature': + mdlines.append(' ' + line) + +sys.stdout.write(''.join(mdlines)) |