cmark

My personal build of CMark ✏️

Commit
78267ab8feba73be859266ef3c84409ccd97bbc4
Parent
f0793895eefc8ca14499831a24abee549a5af53e
Author
John MacFarlane <jgm@berkeley.edu>
Date

Merge pull request #277 from elibarzilay/master

Update the Racket wrapper

Diffstat

1 file changed, 29 insertions, 11 deletions

Status File Name N° Changes Insertions Deletions
Modified wrappers/wrapper.rkt 40 29 11
diff --git 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)]))