diff options
author | John MacFarlane <jgm@berkeley.edu> | 2015-05-06 14:26:56 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2015-05-06 14:26:56 -0700 |
commit | 8dab8b603d3f115d7830f3d90b071ab784596978 (patch) | |
tree | a84b2c08db87fa2b51aa691ad0665757c7f31e46 /wrappers/wrapper.py | |
parent | 36ab6fcfb426000eeb2d341d049f65a3d3d46450 (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-x | wrappers/wrapper.py | 22 |
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())) |