38 lines
913 B
Python
38 lines
913 B
Python
|
#!/usr/bin/env python
|
||
|
|
||
|
# Example for using the shared library from python
|
||
|
# Will work with either python 2 or python 3
|
||
|
# Requires cmark library to be installed
|
||
|
|
||
|
from ctypes import CDLL, c_char_p, c_long
|
||
|
import sys
|
||
|
import platform
|
||
|
|
||
|
sysname = platform.system()
|
||
|
|
||
|
if sysname == 'Darwin':
|
||
|
libname = "libcmark.dylib"
|
||
|
elif sysname == 'Windows':
|
||
|
libname = "cmark.dll"
|
||
|
else:
|
||
|
libname = "libcmark.so"
|
||
|
cmark = CDLL(libname)
|
||
|
|
||
|
markdown = cmark.cmark_markdown_to_html
|
||
|
markdown.restype = c_char_p
|
||
|
markdown.argtypes = [c_char_p, c_long, c_long]
|
||
|
|
||
|
opts = 0 # defaults
|
||
|
|
||
|
def md2html(text):
|
||
|
if sys.version_info >= (3,0):
|
||
|
textbytes = text.encode('utf-8')
|
||
|
textlen = len(textbytes)
|
||
|
return markdown(textbytes, textlen, opts).decode('utf-8')
|
||
|
else:
|
||
|
textbytes = text
|
||
|
textlen = len(text)
|
||
|
return markdown(textbytes, textlen, opts)
|
||
|
|
||
|
sys.stdout.write(md2html(sys.stdin.read()))
|