summaryrefslogtreecommitdiff
path: root/wrappers/wrapper.py
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2015-05-06 14:26:56 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2015-05-06 14:26:56 -0700
commit8dab8b603d3f115d7830f3d90b071ab784596978 (patch)
treea84b2c08db87fa2b51aa691ad0665757c7f31e46 /wrappers/wrapper.py
parent36ab6fcfb426000eeb2d341d049f65a3d3d46450 (diff)
Removed wrapper3.py, made wrapper.py work with python 2/3.
Also improved the wrapper to work with windows, and to use smart punctuation (as an example). In the future we may want to use cffi instead of ctypes. It is like luajit ffi, and allows us to use constants from the C library.
Diffstat (limited to 'wrappers/wrapper.py')
-rwxr-xr-xwrappers/wrapper.py22
1 files changed, 18 insertions, 4 deletions
diff --git a/wrappers/wrapper.py b/wrappers/wrapper.py
index 52cbfc7..44d982c 100755
--- a/wrappers/wrapper.py
+++ b/wrappers/wrapper.py
@@ -1,6 +1,8 @@
#!/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
@@ -9,15 +11,27 @@ import platform
sysname = platform.system()
if sysname == 'Darwin':
- cmark = CDLL("build/src/libcmark.dylib")
+ libname = "libcmark.dylib"
+elif sysname == 'Windows':
+ libname = "cmark.dll"
else:
- cmark = CDLL("build/src/libcmark.so")
+ libname = "libcmark.so"
+cmark = CDLL(libname)
markdown = cmark.cmark_markdown_to_html
markdown.restype = c_char_p
-markdown.argtypes = [c_char_p, c_long]
+markdown.argtypes = [c_char_p, c_long, c_long]
+
+opts = 8 # CMARK_OPT_PRETTY
def md2html(text):
- return markdown(text, len(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()))