- Commit
- b004ef0330ece7767bd9b57aa16bfe36e8fcc350
- Parent
- 9fedb89af38b5a43eb0f7944e938dbbdb17a499d
- Author
- John MacFarlane <jgm@berkeley.edu>
- Date
Added make_man_page.py script.
My personal build of CMark ✏️
Added make_man_page.py script.
1 file changed, 37 insertions, 0 deletions
Status | File Name | N° Changes | Insertions | Deletions |
Added | man/make_man_page.py | 37 | 37 | 0 |
diff --git a/man/make_man_page.py 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))