diff options
author | John MacFarlane <jgm@berkeley.edu> | 2014-11-29 18:57:29 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2014-11-29 18:59:04 -0800 |
commit | b004ef0330ece7767bd9b57aa16bfe36e8fcc350 (patch) | |
tree | 6eda5417b29084dd37f89504052e5be7b6a5d988 | |
parent | 9fedb89af38b5a43eb0f7944e938dbbdb17a499d (diff) |
Added make_man_page.py script.
-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)) |