cmark

My personal build of CMark ✏️

Commit
3494245c36805c24c68996551dc77a5438ae2e8f
Parent
46ac1e61878a6eefea1f3bfff8d25edf8eca0c05
Author
John MacFarlane <jgm@berkeley.edu>
Date

Limit generated man page to 72 character line width.

Diffstat

2 files changed, 77 insertions, 64 deletions

Status File Name N° Changes Insertions Deletions
Modified man/make_man_page.py 6 3 3
Modified man/man3/cmark.3 135 74 61
diff --git a/man/make_man_page.py b/man/make_man_page.py
@@ -31,17 +31,17 @@ parse_document.argtypes = [c_char_p, c_long]
 
 render_man = cmark.cmark_render_man
 render_man.restype = c_char_p
-render_man.argtypes = [c_void_p]
+render_man.argtypes = [c_void_p, c_long, c_long]
 
 def md2man(text):
     if sys.version_info >= (3,0):
         textbytes = text.encode('utf-8')
         textlen = len(textbytes)
-        return render_man(parse_document(textbytes, textlen)).decode('utf-8')
+        return render_man(parse_document(textbytes, textlen), 0, 65).decode('utf-8')
     else:
         textbytes = text
         textlen = len(text)
-        return render_man(parse_document(textbytes, textlen))
+        return render_man(parse_document(textbytes, textlen), 0, 72)
 
 comment_start_re = re.compile('^\/\*\* ?')
 comment_delim_re = re.compile('^[/ ]\** ?')
diff --git a/man/man3/cmark.3 b/man/man3/cmark.3
@@ -13,9 +13,9 @@ Simple Interface
 \fIchar *\f[] \fBcmark_markdown_to_html\f[](\fIconst char *text\f[], \fIsize_t len\f[], \fIint options\f[])
 
 \&.PP
-Convert \ef[I]text\ef[] (assumed to be a UTF\-8 encoded string with length
-\ef[I]len\ef[] from CommonMark Markdown to HTML, returning a null\-terminated,
-UTF\-8\-encoded string.
+Convert \ef[I]text\ef[] (assumed to be a UTF\-8 encoded string with
+length \ef[I]len\ef[] from CommonMark Markdown to HTML, returning a
+null\-terminated, UTF\-8\-encoded string.
 
 \&.SS
 Node Structure
@@ -28,8 +28,8 @@ Creating and Destroying Nodes
 
 \&.PP
 Creates a new node of type \ef[I]type\ef[]. Note that the node may have
-other required properties, which it is the caller's responsibility
-to assign.
+other required properties, which it is the caller's responsibility to
+assign.
 
 .PP
 \fIvoid\f[] \fBcmark_node_free\f[](\fIcmark_node *node\f[])
@@ -51,8 +51,8 @@ there is none.
 \fIcmark_node*\f[] \fBcmark_node_previous\f[](\fIcmark_node *node\f[])
 
 \&.PP
-Returns the previous node in the sequence after \ef[I]node\ef[], or NULL if
-there is none.
+Returns the previous node in the sequence after \ef[I]node\ef[], or NULL
+if there is none.
 
 .PP
 \fIcmark_node*\f[] \fBcmark_node_parent\f[](\fIcmark_node *node\f[])
@@ -64,29 +64,32 @@ Returns the parent of \ef[I]node\ef[], or NULL if there is none.
 \fIcmark_node*\f[] \fBcmark_node_first_child\f[](\fIcmark_node *node\f[])
 
 \&.PP
-Returns the first child of \ef[I]node\ef[], or NULL if \ef[I]node\ef[] has no children.
+Returns the first child of \ef[I]node\ef[], or NULL if \ef[I]node\ef[]
+has no children.
 
 .PP
 \fIcmark_node*\f[] \fBcmark_node_last_child\f[](\fIcmark_node *node\f[])
 
 \&.PP
-Returns the last child of \ef[I]node\ef[], or NULL if \ef[I]node\ef[] has no children.
+Returns the last child of \ef[I]node\ef[], or NULL if \ef[I]node\ef[]
+has no children.
 
 \&.SS
 Iterator
 \&.PP
 An iterator will walk through a tree of nodes, starting from a root
 node, returning one node at a time, together with information about
-whether the node is being entered or exited. The iterator will
-first descend to a child node, if there is one. When there is no
-child, the iterator will go to the next sibling. When there is no
-next sibling, the iterator will return to the parent (but with
-a \ef[I]cmark_event_type\ef[] of \ef[C]CMARK_EVENT_EXIT\ef[]). The iterator will
-return \ef[C]CMARK_EVENT_DONE\ef[] when it reaches the root node again.
-One natural application is an HTML renderer, where an \ef[C]ENTER\ef[] event
-outputs an open tag and an \ef[C]EXIT\ef[] event outputs a close tag.
-An iterator might also be used to transform an AST in some systematic
-way, for example, turning all level\-3 headers into regular paragraphs.
+whether the node is being entered or exited. The iterator will first
+descend to a child node, if there is one. When there is no child, the
+iterator will go to the next sibling. When there is no next sibling, the
+iterator will return to the parent (but with a
+\ef[I]cmark_event_type\ef[] of \ef[C]CMARK_EVENT_EXIT\ef[]). The
+iterator will return \ef[C]CMARK_EVENT_DONE\ef[] when it reaches the
+root node again. One natural application is an HTML renderer, where an
+\ef[C]ENTER\ef[] event outputs an open tag and an \ef[C]EXIT\ef[] event
+outputs a close tag. An iterator might also be used to transform an AST
+in some systematic way, for example, turning all level\-3 headers into
+regular paragraphs.
 \&.IP
 \&.nf
 \ef[C]
@@ -105,8 +108,8 @@ usage_example(cmark_node *root) {
 \ef[]
 \&.fi
 \&.PP
-Iterators will never return \ef[C]EXIT\ef[] events for leaf nodes, which are nodes
-of type:
+Iterators will never return \ef[C]EXIT\ef[] events for leaf nodes, which
+are nodes of type:
 \&.IP \e[bu] 2
 CMARK_NODE_HTML
 \&.IP \e[bu] 2
@@ -124,15 +127,16 @@ CMARK_NODE_CODE
 \&.IP \e[bu] 2
 CMARK_NODE_INLINE_HTML
 \&.PP
-Nodes must only be modified after an \ef[C]EXIT\ef[] event, or an \ef[C]ENTER\ef[] event for
-leaf nodes.
+Nodes must only be modified after an \ef[C]EXIT\ef[] event, or an
+\ef[C]ENTER\ef[] event for leaf nodes.
 
 .PP
 \fIcmark_iter*\f[] \fBcmark_iter_new\f[](\fIcmark_node *root\f[])
 
 \&.PP
-Creates a new iterator starting at \ef[I]root\ef[]. The current node and event
-type are undefined until \ef[C]cmark_iter_next\ef[] is called for the first time.
+Creates a new iterator starting at \ef[I]root\ef[]. The current node and
+event type are undefined until \ef[C]cmark_iter_next\ef[] is called for
+the first time.
 
 .PP
 \fIvoid\f[] \fBcmark_iter_free\f[](\fIcmark_iter *iter\f[])
@@ -144,8 +148,9 @@ Frees the memory allocated for an iterator.
 \fIcmark_event_type\f[] \fBcmark_iter_next\f[](\fIcmark_iter *iter\f[])
 
 \&.PP
-Advances to the next node and returns the event type (\ef[C]CMARK_EVENT_ENTER\ef[],
-\ef[C]CMARK_EVENT_EXIT\ef[] or \ef[C]CMARK_EVENT_DONE\ef[]).
+Advances to the next node and returns the event type
+(\ef[C]CMARK_EVENT_ENTER\ef[], \ef[C]CMARK_EVENT_EXIT\ef[] or
+\ef[C]CMARK_EVENT_DONE\ef[]).
 
 .PP
 \fIcmark_node*\f[] \fBcmark_iter_get_node\f[](\fIcmark_iter *iter\f[])
@@ -186,14 +191,15 @@ Returns the user data of \ef[I]node\ef[].
 \fIint\f[] \fBcmark_node_set_user_data\f[](\fIcmark_node *node\f[], \fIvoid *user_data\f[])
 
 \&.PP
-Sets arbitrary user data for \ef[I]node\ef[]. Returns 1 on success,
-0 on failure.
+Sets arbitrary user data for \ef[I]node\ef[]. Returns 1 on success, 0 on
+failure.
 
 .PP
 \fIcmark_node_type\f[] \fBcmark_node_get_type\f[](\fIcmark_node *node\f[])
 
 \&.PP
-Returns the type of \ef[I]node\ef[], or \ef[C]CMARK_NODE_NONE\ef[] on error.
+Returns the type of \ef[I]node\ef[], or \ef[C]CMARK_NODE_NONE\ef[] on
+error.
 
 .PP
 \fIconst char*\f[] \fBcmark_node_get_type_string\f[](\fIcmark_node *node\f[])
@@ -212,60 +218,64 @@ Returns the string contents of \ef[I]node\ef[], or NULL if none.
 \fIint\f[] \fBcmark_node_set_literal\f[](\fIcmark_node *node\f[], \fIconst char *content\f[])
 
 \&.PP
-Sets the string contents of \ef[I]node\ef[]. Returns 1 on success,
-0 on failure.
+Sets the string contents of \ef[I]node\ef[]. Returns 1 on success, 0 on
+failure.
 
 .PP
 \fIint\f[] \fBcmark_node_get_header_level\f[](\fIcmark_node *node\f[])
 
 \&.PP
-Returns the header level of \ef[I]node\ef[], or 0 if \ef[I]node\ef[] is not a header.
+Returns the header level of \ef[I]node\ef[], or 0 if \ef[I]node\ef[] is
+not a header.
 
 .PP
 \fIint\f[] \fBcmark_node_set_header_level\f[](\fIcmark_node *node\f[], \fIint level\f[])
 
 \&.PP
-Sets the header level of \ef[I]node\ef[], returning 1 on success and 0 on error.
+Sets the header level of \ef[I]node\ef[], returning 1 on success and 0
+on error.
 
 .PP
 \fIcmark_list_type\f[] \fBcmark_node_get_list_type\f[](\fIcmark_node *node\f[])
 
 \&.PP
-Returns the list type of \ef[I]node\ef[], or \ef[C]CMARK_NO_LIST\ef[] if \ef[I]node\ef[]
-is not a list.
+Returns the list type of \ef[I]node\ef[], or \ef[C]CMARK_NO_LIST\ef[] if
+\ef[I]node\ef[] is not a list.
 
 .PP
 \fIint\f[] \fBcmark_node_set_list_type\f[](\fIcmark_node *node\f[], \fIcmark_list_type type\f[])
 
 \&.PP
-Sets the list type of \ef[I]node\ef[], returning 1 on success and 0 on error.
+Sets the list type of \ef[I]node\ef[], returning 1 on success and 0 on
+error.
 
 .PP
 \fIcmark_delim_type\f[] \fBcmark_node_get_list_delim\f[](\fIcmark_node *node\f[])
 
 \&.PP
-Returns the list delimiter type of \ef[I]node\ef[], or \ef[C]CMARK_NO_DELIM\ef[] if \ef[I]node\ef[]
-is not a list.
+Returns the list delimiter type of \ef[I]node\ef[], or
+\ef[C]CMARK_NO_DELIM\ef[] if \ef[I]node\ef[] is not a list.
 
 .PP
 \fIint\f[] \fBcmark_node_set_list_delim\f[](\fIcmark_node *node\f[], \fIcmark_delim_type delim\f[])
 
 \&.PP
-Sets the list delimiter type of \ef[I]node\ef[], returning 1 on success and 0
-on error.
+Sets the list delimiter type of \ef[I]node\ef[], returning 1 on success
+and 0 on error.
 
 .PP
 \fIint\f[] \fBcmark_node_get_list_start\f[](\fIcmark_node *node\f[])
 
 \&.PP
-Returns starting number of \ef[I]node\ef[], if it is an ordered list, otherwise 0.
+Returns starting number of \ef[I]node\ef[], if it is an ordered list,
+otherwise 0.
 
 .PP
 \fIint\f[] \fBcmark_node_set_list_start\f[](\fIcmark_node *node\f[], \fIint start\f[])
 
 \&.PP
-Sets starting number of \ef[I]node\ef[], if it is an ordered list. Returns 1
-on success, 0 on failure.
+Sets starting number of \ef[I]node\ef[], if it is an ordered list.
+Returns 1 on success, 0 on failure.
 
 .PP
 \fIint\f[] \fBcmark_node_get_list_tight\f[](\fIcmark_node *node\f[])
@@ -289,8 +299,8 @@ Returns the info string from a fenced code block, or NULL if none.
 \fIint\f[] \fBcmark_node_set_fence_info\f[](\fIcmark_node *node\f[], \fIconst char *info\f[])
 
 \&.PP
-Sets the info string in a fenced code block, returning 1 on
-success and 0 on failure.
+Sets the info string in a fenced code block, returning 1 on success and
+0 on failure.
 
 .PP
 \fIconst char*\f[] \fBcmark_node_get_url\f[](\fIcmark_node *node\f[])
@@ -302,8 +312,8 @@ Gets the URL of a link or image \ef[I]node\ef[], or NULL if none.
 \fIint\f[] \fBcmark_node_set_url\f[](\fIcmark_node *node\f[], \fIconst char *url\f[])
 
 \&.PP
-Sets the URL of a link or image \ef[I]node\ef[]. Returns 1 on success,
-0 on failure.
+Sets the URL of a link or image \ef[I]node\ef[]. Returns 1 on success, 0
+on failure.
 
 .PP
 \fIconst char*\f[] \fBcmark_node_get_title\f[](\fIcmark_node *node\f[])
@@ -349,27 +359,29 @@ Tree Manipulation
 \fIvoid\f[] \fBcmark_node_unlink\f[](\fIcmark_node *node\f[])
 
 \&.PP
-Unlinks a \ef[I]node\ef[], removing it from the tree, but not freeing its
-memory. (Use \ef[I]cmark_node_free\ef[] for that.)
+Unlinks a \ef[I]node\ef[], removing it from the tree, but not freeing
+its memory. (Use \ef[I]cmark_node_free\ef[] for that.)
 
 .PP
 \fIint\f[] \fBcmark_node_insert_before\f[](\fIcmark_node *node\f[], \fIcmark_node *sibling\f[])
 
 \&.PP
-Inserts \ef[I]sibling\ef[] before \ef[I]node\ef[]. Returns 1 on success, 0 on failure.
+Inserts \ef[I]sibling\ef[] before \ef[I]node\ef[]. Returns 1 on success,
+0 on failure.
 
 .PP
 \fIint\f[] \fBcmark_node_insert_after\f[](\fIcmark_node *node\f[], \fIcmark_node *sibling\f[])
 
 \&.PP
-Inserts \ef[I]sibling\ef[] after \ef[I]node\ef[]. Returns 1 on success, 0 on failure.
+Inserts \ef[I]sibling\ef[] after \ef[I]node\ef[]. Returns 1 on success,
+0 on failure.
 
 .PP
 \fIint\f[] \fBcmark_node_prepend_child\f[](\fIcmark_node *node\f[], \fIcmark_node *child\f[])
 
 \&.PP
-Adds \ef[I]child\ef[] to the beginning of the children of \ef[I]node\ef[].
-Returns 1 on success, 0 on failure.
+Adds \ef[I]child\ef[] to the beginning of the children of
+\ef[I]node\ef[]. Returns 1 on success, 0 on failure.
 
 .PP
 \fIint\f[] \fBcmark_node_append_child\f[](\fIcmark_node *node\f[], \fIcmark_node *child\f[])
@@ -441,8 +453,8 @@ Finish parsing and return a pointer to a tree of nodes.
 \fIcmark_node *\f[] \fBcmark_parse_document\f[](\fIconst char *buffer\f[], \fIsize_t len\f[], \fIint options\f[])
 
 \&.PP
-Parse a CommonMark document in \ef[I]buffer\ef[] of length \ef[I]len\ef[].
-Returns a pointer to a tree of nodes.
+Parse a CommonMark document in \ef[I]buffer\ef[] of length
+\ef[I]len\ef[]. Returns a pointer to a tree of nodes.
 
 .PP
 \fIcmark_node *\f[] \fBcmark_parse_file\f[](\fIFILE *f\f[], \fIint options\f[])
@@ -543,7 +555,8 @@ Normalize tree by consolidating adjacent text nodes.
 .fi
 
 \&.PP
-Convert straight quotes to curly, \-\-\- to em dashes, \-\- to en dashes.
+Convert straight quotes to curly, \-\-\- to em dashes, \-\- to en
+dashes.
 
 .PP
 .nf
@@ -555,8 +568,8 @@ Convert straight quotes to curly, \-\-\- to em dashes, \-\- to en dashes.
 .fi
 
 \&.PP
-Validate UTF\-8 in the input before parsing, replacing illegal
-sequences with the replacement character U+FFFD.
+Validate UTF\-8 in the input before parsing, replacing illegal sequences
+with the replacement character U+FFFD.
 
 \&.SS
 Version information
@@ -580,8 +593,8 @@ In hexadecimal format, the number 0x010203 represents version 1.2.3.
 \fIconst char *\f[] \fBcmark_version_string\f[](\fI\f[])
 
 \&.PP
-The library version string for runtime checks. Also available as
-macro CMARK_VERSION_STRING for compile time checks.
+The library version string for runtime checks. Also available as macro
+CMARK_VERSION_STRING for compile time checks.
 
 \&.SH
 AUTHORS