cmark

My personal build of CMark ✏️

Commit
b004ef0330ece7767bd9b57aa16bfe36e8fcc350
Parent
9fedb89af38b5a43eb0f7944e938dbbdb17a499d
Author
John MacFarlane <jgm@berkeley.edu>
Date

Added make_man_page.py script.

Diffstat

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))