From b004ef0330ece7767bd9b57aa16bfe36e8fcc350 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sat, 29 Nov 2014 18:57:29 -0800 Subject: Added make_man_page.py script. --- man/make_man_page.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 man/make_man_page.py 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)) -- cgit v1.2.3