cmark

My personal build of CMark ✏️

wrapper.py (913B)

 1 #!/usr/bin/env python
 2 
 3 # Example for using the shared library from python
 4 # Will work with either python 2 or python 3
 5 # Requires cmark library to be installed
 6 
 7 from ctypes import CDLL, c_char_p, c_long
 8 import sys
 9 import platform
10 
11 sysname = platform.system()
12 
13 if sysname == 'Darwin':
14     libname = "libcmark.dylib"
15 elif sysname == 'Windows':
16     libname = "cmark.dll"
17 else:
18     libname = "libcmark.so"
19 cmark = CDLL(libname)
20 
21 markdown = cmark.cmark_markdown_to_html
22 markdown.restype = c_char_p
23 markdown.argtypes = [c_char_p, c_long, c_long]
24 
25 opts = 0 # defaults
26 
27 def md2html(text):
28     if sys.version_info >= (3,0):
29         textbytes = text.encode('utf-8')
30         textlen = len(textbytes)
31         return markdown(textbytes, textlen, opts).decode('utf-8')
32     else:
33         textbytes = text
34         textlen = len(text)
35         return markdown(textbytes, textlen, opts)
36 
37 sys.stdout.write(md2html(sys.stdin.read()))