diff options
author | Eli Barzilay <eli@barzilay.org> | 2018-11-14 08:49:03 -0500 |
---|---|---|
committer | Eli Barzilay <eli@barzilay.org> | 2018-11-14 08:49:20 -0500 |
commit | b1c63da0caf616f9908c4fc0c4ae3028436ac137 (patch) | |
tree | 98a66af793a0e55e96b97da4e2dd2560a7d7f6cd /wrappers | |
parent | b1556b3407a4349b9a1f4f58d8677eda0ead09c1 (diff) |
Update the Racket wrapper
Diffstat (limited to 'wrappers')
-rw-r--r-- | wrappers/wrapper.rkt | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/wrappers/wrapper.rkt b/wrappers/wrapper.rkt index d9b34e8..1ecce17 100644 --- a/wrappers/wrapper.rkt +++ b/wrappers/wrapper.rkt @@ -13,19 +13,34 @@ (define-ffi-definer defcmark (ffi-lib "libcmark")) (define _cmark_node_type - (_enum '(none + (_enum '(;; Error status + none ;; Block document block-quote list item code-block - html paragraph header hrule + html-block custom-block + paragraph heading thematic-break + ;; ?? first-block = document + ;; ?? last-block = thematic-break ;; Inline - text softbreak linebreak code inline-html - emph strong link image))) + text softbreak linebreak code html-inline custom-inline + emph strong link image + ;; ?? first-inline = text + ;; ?? last-inline = image + ))) (define _cmark_list_type (_enum '(no_list bullet_list ordered_list))) (define _cmark_delim_type (_enum '(no_delim period_delim paren_delim))) (define _cmark_opts - (_bitmask '(sourcepos = 1 hardbreaks = 2 normalize = 4 smart = 8))) + (_bitmask + '(sourcepos = 2 ; include sourcepos attribute on block elements + hardbreaks = 4 ; render `softbreak` elements as hard line breaks + safe = 8 ; suppress raw HTML and unsafe links + nobreaks = 16 ; render `softbreak` elements as spaces + normalize = 256 ; legacy (no effect) + validate-utf8 = 512 ; validate UTF-8 in the input + smart = 1024 ; straight quotes to curly, ---/-- to em/en dashes + ))) (define-cpointer-type _node) @@ -56,8 +71,8 @@ (defcmark cmark_node_get_type_string (_fun _node -> _bytes)) (defcmark cmark_node_get_literal (_fun _node -> _string)) (defcmark cmark_node_set_literal (_fun _node _string -> _bool)) - (defcmark cmark_node_get_header_level (_fun _node -> _int)) - (defcmark cmark_node_set_header_level (_fun _node _int -> _bool)) + (defcmark cmark_node_get_heading_level (_fun _node -> _int)) + (defcmark cmark_node_set_heading_level (_fun _node _int -> _bool)) (defcmark cmark_node_get_list_type (_fun _node -> _cmark_list_type)) (defcmark cmark_node_set_list_type (_fun _node _cmark_list_type -> _bool)) (defcmark cmark_node_get_list_delim (_fun _node -> _cmark_delim_type)) @@ -84,6 +99,9 @@ (defcmark cmark_node_append_child (_fun _node _node -> _bool)) (defcmark cmark_consolidate_text_nodes (_fun _node -> _void)) + (defcmark cmark_version (_fun -> _int)) + (defcmark cmark_version_string (_fun -> _string)) + ) ;; Rackety interface @@ -108,7 +126,7 @@ (define-syntax-rule (define-getters+setters name [type field ...] ...) (define name (list (list 'type (make-getter+setter field) ...) ...))) (define-getters+setters getters+setters - [header header_level] [code-block fence_info] + [heading heading_level] [code-block fence_info] [link url title] [image url title] [list list_type list_delim list_start list_tight]) @@ -126,12 +144,12 @@ [else '()])) (define (assert-no what-not b) (when b (error 'cmark->sexpr "unexpected ~a in ~s" what-not type))) - (cond [(memq type '(document paragraph header block-quote list item + (cond [(memq type '(document paragraph heading block-quote list item emph strong link image)) (assert-no 'text text) (list type info children)] - [(memq type '(text code code-block html inline-html - softbreak linebreak hrule)) + [(memq type '(text code code-block html-block html-inline + softbreak linebreak thematic-break)) (assert-no 'children (pair? children)) (list type info text)] [else (error 'cmark->sexpr "unknown type: ~s" type)])) |