aboutsummaryrefslogtreecommitdiff
path: root/lib/cmark/man
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-22 20:53:39 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-22 20:53:39 +0200
commit8dbfb0890560fd1cd698d06fa05ac868c4db8576 (patch)
tree57d138d7e9967473b8ed52863dabeb739a34ac8e /lib/cmark/man
parent058aeef80e8a33d0e385f284b23eeb117f5ec547 (diff)
downloadkristall-8dbfb0890560fd1cd698d06fa05ac868c4db8576.tar.gz
Removes 'cruft' from cmark. We only care for the source anyways.
Diffstat (limited to 'lib/cmark/man')
-rw-r--r--lib/cmark/man/CMakeLists.txt4
-rw-r--r--lib/cmark/man/make_man_page.py133
-rw-r--r--lib/cmark/man/man1/cmark.169
-rw-r--r--lib/cmark/man/man3/cmark.3849
4 files changed, 0 insertions, 1055 deletions
diff --git a/lib/cmark/man/CMakeLists.txt b/lib/cmark/man/CMakeLists.txt
deleted file mode 100644
index 8ed5448..0000000
--- a/lib/cmark/man/CMakeLists.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/man1/cmark.1
- DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
-install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/man3/cmark.3
- DESTINATION ${CMAKE_INSTALL_MANDIR}/man3)
diff --git a/lib/cmark/man/make_man_page.py b/lib/cmark/man/make_man_page.py
deleted file mode 100644
index 4b49dbd..0000000
--- a/lib/cmark/man/make_man_page.py
+++ /dev/null
@@ -1,133 +0,0 @@
-#!/usr/bin/env python
-
-# Creates a man page from a C file.
-
-# first argument if present is path to cmark dynamic library
-
-# Comments beginning with `/**` are treated as Groff man, except that
-# 'this' is converted to \fIthis\f[], and ''this'' to \fBthis\f[].
-
-# Non-blank lines immediately following a man page comment are treated
-# as function signatures or examples and parsed into .Ft, .Fo, .Fa, .Fc. The
-# immediately preceding man documentation chunk is printed after the example
-# as a comment on it.
-
-# That's about it!
-
-import sys, re, os, platform
-from datetime import date
-from ctypes import CDLL, c_char_p, c_long, c_void_p
-
-sysname = platform.system()
-
-if sysname == 'Darwin':
- cmark = CDLL("build/src/libcmark.dylib")
-else:
- cmark = CDLL("build/src/libcmark.so")
-
-parse_document = cmark.cmark_parse_document
-parse_document.restype = c_void_p
-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, 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), 0, 65).decode('utf-8')
- else:
- textbytes = text
- textlen = len(text)
- return render_man(parse_document(textbytes, textlen), 0, 72)
-
-comment_start_re = re.compile('^\/\*\* ?')
-comment_delim_re = re.compile('^[/ ]\** ?')
-comment_end_re = re.compile('^ \**\/')
-function_re = re.compile('^ *(?:CMARK_EXPORT\s+)?(?P<type>(?:const\s+)?\w+(?:\s*[*])?)\s*(?P<name>\w+)\s*\((?P<args>[^)]*)\)')
-blank_re = re.compile('^\s*$')
-macro_re = re.compile('CMARK_EXPORT *')
-typedef_start_re = re.compile('typedef.*{$')
-typedef_end_re = re.compile('}')
-single_quote_re = re.compile("(?<!\w)'([^']+)'(?!\w)")
-double_quote_re = re.compile("(?<!\w)''([^']+)''(?!\w)")
-
-def handle_quotes(s):
- return re.sub(double_quote_re, '**\g<1>**', re.sub(single_quote_re, '*\g<1>*', s))
-
-typedef = False
-mdlines = []
-chunk = []
-sig = []
-
-if len(sys.argv) > 1:
- sourcefile = sys.argv[1]
-else:
- print("Usage: make_man_page.py sourcefile")
- exit(1)
-
-with open(sourcefile, 'r') as cmarkh:
- state = 'default'
- for line in cmarkh:
- # state transition
- oldstate = state
- if comment_start_re.match(line):
- state = 'man'
- elif comment_end_re.match(line) and state == 'man':
- continue
- elif comment_delim_re.match(line) and state == 'man':
- state = 'man'
- elif not typedef and blank_re.match(line):
- state = 'default'
- elif typedef and typedef_end_re.match(line):
- typedef = False
- elif typedef_start_re.match(line):
- typedef = True
- state = 'signature'
- elif state == 'man':
- state = 'signature'
-
- # handle line
- if state == 'man':
- chunk.append(handle_quotes(re.sub(comment_delim_re, '', line)))
- elif state == 'signature':
- ln = re.sub(macro_re, '', line)
- if typedef or not re.match(blank_re, ln):
- sig.append(ln)
- elif oldstate == 'signature' and state != 'signature':
- if len(mdlines) > 0 and mdlines[-1] != '\n':
- mdlines.append('\n')
- rawsig = ''.join(sig)
- m = function_re.match(rawsig)
- mdlines.append('.PP\n')
- if m:
- mdlines.append('\\fI' + m.group('type') + '\\f[]' + ' ')
- mdlines.append('\\fB' + m.group('name') + '\\f[]' + '(')
- first = True
- for argument in re.split(',', m.group('args')):
- if not first:
- mdlines.append(', ')
- first = False
- mdlines.append('\\fI' + argument.strip() + '\\f[]')
- mdlines.append(')\n')
- else:
- mdlines.append('.nf\n\\fC\n.RS 0n\n')
- mdlines += sig
- mdlines.append('.RE\n\\f[]\n.fi\n')
- if len(mdlines) > 0 and mdlines[-1] != '\n':
- mdlines.append('\n')
- mdlines += md2man(''.join(chunk))
- mdlines.append('\n')
- chunk = []
- sig = []
- elif oldstate == 'man' and state != 'signature':
- if len(mdlines) > 0 and mdlines[-1] != '\n':
- mdlines.append('\n')
- mdlines += md2man(''.join(chunk)) # add man chunk
- chunk = []
- mdlines.append('\n')
-
-sys.stdout.write('.TH ' + os.path.basename(sourcefile).replace('.h','') + ' 3 "' + date.today().strftime('%B %d, %Y') + '" "LOCAL" "Library Functions Manual"\n')
-sys.stdout.write(''.join(mdlines))
diff --git a/lib/cmark/man/man1/cmark.1 b/lib/cmark/man/man1/cmark.1
deleted file mode 100644
index 71db059..0000000
--- a/lib/cmark/man/man1/cmark.1
+++ /dev/null
@@ -1,69 +0,0 @@
-.TH "cmark" "1" "Feburary 11, 2020" "LOCAL" "General Commands Manual"
-.SH "NAME"
-\fBcmark\fR
-\- convert CommonMark formatted text to HTML
-.SH "SYNOPSIS"
-.HP 6n
-\fBcmark\fR
-[options]
-file*
-.SH "DESCRIPTION"
-\fBcmark\fR
-converts Markdown formatted plain text to either HTML, groff man,
-CommonMark XML, LaTeX, or CommonMark, using the conventions
-described in the CommonMark spec. It reads input from \fIstdin\fR
-or the specified files (concatenating their contents) and writes
-output to \fIstdout\fR.
-.SH "OPTIONS"
-.TP 12n
-.B \-\-to, \-t \f[I]FORMAT\f[]
-Specify output format (\f[C]html\f[], \f[C]man\f[], \f[C]xml\f[],
-\f[C]latex\f[], \f[C]commonmark\f[]).
-.TP 12n
-.B \-\-width \f[I]WIDTH\f[]
-Specify a column width to which to wrap the output. For no wrapping, use
-the value 0 (the default). This option currently only affects the
-commonmark, latex, and man renderers.
-.TP 12n
-.B \-\-hardbreaks
-Render soft breaks (newlines inside paragraphs in the CommonMark source)
-as hard line breaks in the target format. If this option is specified,
-hard wrapping is disabled for CommonMark output, regardless of the value
-given with \-\-width.
-.TP 12n
-.B \-\-nobreaks
-Render soft breaks as spaces. If this option is specified,
-hard wrapping is disabled for all output formats, regardless of the value
-given with \-\-width.
-.TP 12n
-.B \-\-sourcepos
-Include source position attribute.
-.TP 12n
-.B \-\-validate-utf8
-Validate UTF-8, replacing illegal sequences with U+FFFD.
-.TP 12n
-.B \-\-smart
-Use smart punctuation. Straight double and single quotes will
-be rendered as curly quotes, depending on their position.
-\f[C]\-\-\f[] will be rendered as an en-dash.
-\f[C]\-\-\-\f[] will be rendered as an em-dash.
-\f[C]...\f[] will be rendered as ellipses.
-.TP 12n
-.B \-\-unsafe
-Render raw HTML or potentially dangerous URLs.
-By default, raw HTML is replaced by a placeholder comment
-and potentially dangerous URLs are replaced by empty strings.
-Dangerous URLs are those that begin with `javascript:`,
-`vbscript:`, `file:`, or `data:` (except for `image/png`,
-`image/gif`, `image/jpeg`, or `image/webp` mime types).
-.TP 12n
-.B \-\-help
-Print usage information.
-.TP 12n
-.B \-\-version
-Print version.
-.SH "AUTHORS"
-John MacFarlane, Vicent Marti, Kārlis Gaņģis, Nick Wellnhofer.
-.SH "SEE ALSO"
-.PP
-CommonMark spec: \f[C]https://spec.commonmark.org\f[].
diff --git a/lib/cmark/man/man3/cmark.3 b/lib/cmark/man/man3/cmark.3
deleted file mode 100644
index a4c68f6..0000000
--- a/lib/cmark/man/man3/cmark.3
+++ /dev/null
@@ -1,849 +0,0 @@
-.TH cmark 3 "June 22, 2020" "LOCAL" "Library Functions Manual"
-.SH
-NAME
-.PP
-\f[B]cmark\f[] \- CommonMark parsing, manipulating, and rendering
-
-.SH
-DESCRIPTION
-.SS
-Simple Interface
-
-.PP
-\fIchar *\f[] \fBcmark_markdown_to_html\f[](\fIconst char *text\f[], \fIsize_t len\f[], \fIint options\f[])
-
-.PP
-Convert \f[I]text\f[] (assumed to be a UTF\-8 encoded string with
-length \f[I]len\f[]) from CommonMark Markdown to HTML, returning
-a null\-terminated, UTF\-8\-encoded string. It is the caller's
-responsibility to free the returned buffer.
-
-.SS
-Node Structure
-
-.PP
-.nf
-\fC
-.RS 0n
-typedef enum {
- /* Error status */
- CMARK_NODE_NONE,
-
- /* Block */
- CMARK_NODE_DOCUMENT,
- CMARK_NODE_BLOCK_QUOTE,
- CMARK_NODE_LIST,
- CMARK_NODE_ITEM,
- CMARK_NODE_CODE_BLOCK,
- CMARK_NODE_HTML_BLOCK,
- CMARK_NODE_CUSTOM_BLOCK,
- CMARK_NODE_PARAGRAPH,
- CMARK_NODE_HEADING,
- CMARK_NODE_THEMATIC_BREAK,
-
- CMARK_NODE_FIRST_BLOCK = CMARK_NODE_DOCUMENT,
- CMARK_NODE_LAST_BLOCK = CMARK_NODE_THEMATIC_BREAK,
-
- /* Inline */
- CMARK_NODE_TEXT,
- CMARK_NODE_SOFTBREAK,
- CMARK_NODE_LINEBREAK,
- CMARK_NODE_CODE,
- CMARK_NODE_HTML_INLINE,
- CMARK_NODE_CUSTOM_INLINE,
- CMARK_NODE_EMPH,
- CMARK_NODE_STRONG,
- CMARK_NODE_LINK,
- CMARK_NODE_IMAGE,
-
- CMARK_NODE_FIRST_INLINE = CMARK_NODE_TEXT,
- CMARK_NODE_LAST_INLINE = CMARK_NODE_IMAGE,
-} cmark_node_type;
-.RE
-\f[]
-.fi
-
-
-
-.PP
-.nf
-\fC
-.RS 0n
-typedef enum {
- CMARK_NO_LIST,
- CMARK_BULLET_LIST,
- CMARK_ORDERED_LIST
-} cmark_list_type;
-.RE
-\f[]
-.fi
-
-
-
-.PP
-.nf
-\fC
-.RS 0n
-typedef enum {
- CMARK_NO_DELIM,
- CMARK_PERIOD_DELIM,
- CMARK_PAREN_DELIM
-} cmark_delim_type;
-.RE
-\f[]
-.fi
-
-
-
-.SS
-Custom memory allocator support
-
-.PP
-.nf
-\fC
-.RS 0n
-typedef struct cmark_mem {
- void *(*calloc)(size_t, size_t);
- void *(*realloc)(void *, size_t);
- void (*free)(void *);
-} cmark_mem;
-.RE
-\f[]
-.fi
-
-.PP
-Defines the memory allocation functions to be used by CMark when
-parsing and allocating a document tree
-
-.PP
-\fIcmark_mem *\f[] \fBcmark_get_default_mem_allocator\f[](\fI\f[])
-
-.PP
-Returns a pointer to the default memory allocator.
-
-.SS
-Creating and Destroying Nodes
-
-.PP
-\fIcmark_node *\f[] \fBcmark_node_new\f[](\fIcmark_node_type type\f[])
-
-.PP
-Creates a new node of type \f[I]type\f[]. Note that the node may
-have other required properties, which it is the caller's
-responsibility to assign.
-
-.PP
-\fIcmark_node *\f[] \fBcmark_node_new_with_mem\f[](\fIcmark_node_type type\f[], \fIcmark_mem *mem\f[])
-
-.PP
-Same as \f[C]cmark_node_new\f[], but explicitly listing the
-memory allocator used to allocate the node. Note: be sure to use
-the same allocator for every node in a tree, or bad things can
-happen.
-
-.PP
-\fIvoid\f[] \fBcmark_node_free\f[](\fIcmark_node *node\f[])
-
-.PP
-Frees the memory allocated for a node and any children.
-
-.SS
-Tree Traversal
-
-.PP
-\fIcmark_node *\f[] \fBcmark_node_next\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the next node in the sequence after \f[I]node\f[], or
-NULL if there is none.
-
-.PP
-\fIcmark_node *\f[] \fBcmark_node_previous\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the previous node in the sequence after \f[I]node\f[], or
-NULL if there is none.
-
-.PP
-\fIcmark_node *\f[] \fBcmark_node_parent\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the parent of \f[I]node\f[], or NULL if there is none.
-
-.PP
-\fIcmark_node *\f[] \fBcmark_node_first_child\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the first child of \f[I]node\f[], or NULL if
-\f[I]node\f[] has no children.
-
-.PP
-\fIcmark_node *\f[] \fBcmark_node_last_child\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the last child of \f[I]node\f[], or NULL if \f[I]node\f[]
-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 \f[I]cmark_event_type\f[] of
-\f[C]CMARK_EVENT_EXIT\f[]). The iterator will return
-\f[C]CMARK_EVENT_DONE\f[] when it reaches the root node again.
-One natural application is an HTML renderer, where an
-\f[C]ENTER\f[] event outputs an open tag and an \f[C]EXIT\f[]
-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 headings into regular paragraphs.
-.IP
-.nf
-\f[C]
-void
-usage_example(cmark_node *root) {
- cmark_event_type ev_type;
- cmark_iter *iter = cmark_iter_new(root);
-
- while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) {
- cmark_node *cur = cmark_iter_get_node(iter);
- // Do something with `cur` and `ev_type`
- }
-
- cmark_iter_free(iter);
-}
-\f[]
-.fi
-.PP
-Iterators will never return \f[C]EXIT\f[] events for leaf nodes,
-which are nodes of type:
-.IP \[bu] 2
-CMARK_NODE_HTML_BLOCK
-.IP \[bu] 2
-CMARK_NODE_THEMATIC_BREAK
-.IP \[bu] 2
-CMARK_NODE_CODE_BLOCK
-.IP \[bu] 2
-CMARK_NODE_TEXT
-.IP \[bu] 2
-CMARK_NODE_SOFTBREAK
-.IP \[bu] 2
-CMARK_NODE_LINEBREAK
-.IP \[bu] 2
-CMARK_NODE_CODE
-.IP \[bu] 2
-CMARK_NODE_HTML_INLINE
-.PP
-Nodes must only be modified after an \f[C]EXIT\f[] event, or an
-\f[C]ENTER\f[] event for leaf nodes.
-
-.PP
-.nf
-\fC
-.RS 0n
-typedef enum {
- CMARK_EVENT_NONE,
- CMARK_EVENT_DONE,
- CMARK_EVENT_ENTER,
- CMARK_EVENT_EXIT
-} cmark_event_type;
-.RE
-\f[]
-.fi
-
-
-
-.PP
-\fIcmark_iter *\f[] \fBcmark_iter_new\f[](\fIcmark_node *root\f[])
-
-.PP
-Creates a new iterator starting at \f[I]root\f[]. The current
-node and event type are undefined until \f[I]cmark_iter_next\f[]
-is called for the first time. The memory allocated for the
-iterator should be released using \f[I]cmark_iter_free\f[] when
-it is no longer needed.
-
-.PP
-\fIvoid\f[] \fBcmark_iter_free\f[](\fIcmark_iter *iter\f[])
-
-.PP
-Frees the memory allocated for an iterator.
-
-.PP
-\fIcmark_event_type\f[] \fBcmark_iter_next\f[](\fIcmark_iter *iter\f[])
-
-.PP
-Advances to the next node and returns the event type
-(\f[C]CMARK_EVENT_ENTER\f[], \f[C]CMARK_EVENT_EXIT\f[] or
-\f[C]CMARK_EVENT_DONE\f[]).
-
-.PP
-\fIcmark_node *\f[] \fBcmark_iter_get_node\f[](\fIcmark_iter *iter\f[])
-
-.PP
-Returns the current node.
-
-.PP
-\fIcmark_event_type\f[] \fBcmark_iter_get_event_type\f[](\fIcmark_iter *iter\f[])
-
-.PP
-Returns the current event type.
-
-.PP
-\fIcmark_node *\f[] \fBcmark_iter_get_root\f[](\fIcmark_iter *iter\f[])
-
-.PP
-Returns the root node.
-
-.PP
-\fIvoid\f[] \fBcmark_iter_reset\f[](\fIcmark_iter *iter\f[], \fIcmark_node *current\f[], \fIcmark_event_type event_type\f[])
-
-.PP
-Resets the iterator so that the current node is \f[I]current\f[]
-and the event type is \f[I]event_type\f[]. The new current node
-must be a descendant of the root node or the root node itself.
-
-.SS
-Accessors
-
-.PP
-\fIvoid *\f[] \fBcmark_node_get_user_data\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the user data of \f[I]node\f[].
-
-.PP
-\fIint\f[] \fBcmark_node_set_user_data\f[](\fIcmark_node *node\f[], \fIvoid *user_data\f[])
-
-.PP
-Sets arbitrary user data for \f[I]node\f[]. 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 \f[I]node\f[], or \f[C]CMARK_NODE_NONE\f[] on
-error.
-
-.PP
-\fIconst char *\f[] \fBcmark_node_get_type_string\f[](\fIcmark_node *node\f[])
-
-.PP
-Like \f[I]cmark_node_get_type\f[], but returns a string
-representation of the type, or \f[C]"<unknown>"\f[].
-
-.PP
-\fIconst char *\f[] \fBcmark_node_get_literal\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the string contents of \f[I]node\f[], or an empty string
-if none is set. Returns NULL if called on a node that does not
-have string content.
-
-.PP
-\fIint\f[] \fBcmark_node_set_literal\f[](\fIcmark_node *node\f[], \fIconst char *content\f[])
-
-.PP
-Sets the string contents of \f[I]node\f[]. Returns 1 on success,
-0 on failure.
-
-.PP
-\fIint\f[] \fBcmark_node_get_heading_level\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the heading level of \f[I]node\f[], or 0 if \f[I]node\f[]
-is not a heading.
-
-.PP
-\fIint\f[] \fBcmark_node_set_heading_level\f[](\fIcmark_node *node\f[], \fIint level\f[])
-
-.PP
-Sets the heading level of \f[I]node\f[], 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 \f[I]node\f[], or \f[C]CMARK_NO_LIST\f[]
-if \f[I]node\f[] 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 \f[I]node\f[], 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 \f[I]node\f[], or
-\f[C]CMARK_NO_DELIM\f[] if \f[I]node\f[] 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 \f[I]node\f[], 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 \f[I]node\f[], 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 \f[I]node\f[], 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[])
-
-.PP
-Returns 1 if \f[I]node\f[] is a tight list, 0 otherwise.
-
-.PP
-\fIint\f[] \fBcmark_node_set_list_tight\f[](\fIcmark_node *node\f[], \fIint tight\f[])
-
-.PP
-Sets the "tightness" of a list. Returns 1 on success, 0 on
-failure.
-
-.PP
-\fIconst char *\f[] \fBcmark_node_get_fence_info\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the info string from a fenced code block.
-
-.PP
-\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.
-
-.PP
-\fIconst char *\f[] \fBcmark_node_get_url\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the URL of a link or image \f[I]node\f[], or an empty
-string if no URL is set. Returns NULL if called on a node that is
-not a link or image.
-
-.PP
-\fIint\f[] \fBcmark_node_set_url\f[](\fIcmark_node *node\f[], \fIconst char *url\f[])
-
-.PP
-Sets the URL of a link or image \f[I]node\f[]. Returns 1 on
-success, 0 on failure.
-
-.PP
-\fIconst char *\f[] \fBcmark_node_get_title\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the title of a link or image \f[I]node\f[], or an empty
-string if no title is set. Returns NULL if called on a node that
-is not a link or image.
-
-.PP
-\fIint\f[] \fBcmark_node_set_title\f[](\fIcmark_node *node\f[], \fIconst char *title\f[])
-
-.PP
-Sets the title of a link or image \f[I]node\f[]. Returns 1 on
-success, 0 on failure.
-
-.PP
-\fIconst char *\f[] \fBcmark_node_get_on_enter\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the literal "on enter" text for a custom \f[I]node\f[],
-or an empty string if no on_enter is set. Returns NULL if called
-on a non\-custom node.
-
-.PP
-\fIint\f[] \fBcmark_node_set_on_enter\f[](\fIcmark_node *node\f[], \fIconst char *on_enter\f[])
-
-.PP
-Sets the literal text to render "on enter" for a custom
-\f[I]node\f[]. Any children of the node will be rendered after
-this text. Returns 1 on success 0 on failure.
-
-.PP
-\fIconst char *\f[] \fBcmark_node_get_on_exit\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the literal "on exit" text for a custom \f[I]node\f[], or
-an empty string if no on_exit is set. Returns NULL if called on a
-non\-custom node.
-
-.PP
-\fIint\f[] \fBcmark_node_set_on_exit\f[](\fIcmark_node *node\f[], \fIconst char *on_exit\f[])
-
-.PP
-Sets the literal text to render "on exit" for a custom
-\f[I]node\f[]. Any children of the node will be rendered before
-this text. Returns 1 on success 0 on failure.
-
-.PP
-\fIint\f[] \fBcmark_node_get_start_line\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the line on which \f[I]node\f[] begins.
-
-.PP
-\fIint\f[] \fBcmark_node_get_start_column\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the column at which \f[I]node\f[] begins.
-
-.PP
-\fIint\f[] \fBcmark_node_get_end_line\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the line on which \f[I]node\f[] ends.
-
-.PP
-\fIint\f[] \fBcmark_node_get_end_column\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the column at which \f[I]node\f[] ends.
-
-.SS
-Tree Manipulation
-
-.PP
-\fIvoid\f[] \fBcmark_node_unlink\f[](\fIcmark_node *node\f[])
-
-.PP
-Unlinks a \f[I]node\f[], removing it from the tree, but not
-freeing its memory. (Use \f[I]cmark_node_free\f[] for that.)
-
-.PP
-\fIint\f[] \fBcmark_node_insert_before\f[](\fIcmark_node *node\f[], \fIcmark_node *sibling\f[])
-
-.PP
-Inserts \f[I]sibling\f[] before \f[I]node\f[]. 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 \f[I]sibling\f[] after \f[I]node\f[]. Returns 1 on
-success, 0 on failure.
-
-.PP
-\fIint\f[] \fBcmark_node_replace\f[](\fIcmark_node *oldnode\f[], \fIcmark_node *newnode\f[])
-
-.PP
-Replaces \f[I]oldnode\f[] with \f[I]newnode\f[] and unlinks
-\f[I]oldnode\f[] (but does not free its memory). 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 \f[I]child\f[] to the beginning of the children of
-\f[I]node\f[]. Returns 1 on success, 0 on failure.
-
-.PP
-\fIint\f[] \fBcmark_node_append_child\f[](\fIcmark_node *node\f[], \fIcmark_node *child\f[])
-
-.PP
-Adds \f[I]child\f[] to the end of the children of \f[I]node\f[].
-Returns 1 on success, 0 on failure.
-
-.PP
-\fIvoid\f[] \fBcmark_consolidate_text_nodes\f[](\fIcmark_node *root\f[])
-
-.PP
-Consolidates adjacent text nodes.
-
-.SS
-Parsing
-.PP
-Simple interface:
-.IP
-.nf
-\f[C]
-cmark_node *document = cmark_parse_document("Hello *world*", 13,
- CMARK_OPT_DEFAULT);
-\f[]
-.fi
-.PP
-Streaming interface:
-.IP
-.nf
-\f[C]
-cmark_parser *parser = cmark_parser_new(CMARK_OPT_DEFAULT);
-FILE *fp = fopen("myfile.md", "rb");
-while ((bytes = fread(buffer, 1, sizeof(buffer), fp)) > 0) {
- cmark_parser_feed(parser, buffer, bytes);
- if (bytes < sizeof(buffer)) {
- break;
- }
-}
-document = cmark_parser_finish(parser);
-cmark_parser_free(parser);
-\f[]
-.fi
-
-.PP
-\fIcmark_parser *\f[] \fBcmark_parser_new\f[](\fIint options\f[])
-
-.PP
-Creates a new parser object.
-
-.PP
-\fIcmark_parser *\f[] \fBcmark_parser_new_with_mem\f[](\fIint options\f[], \fIcmark_mem *mem\f[])
-
-.PP
-Creates a new parser object with the given memory allocator
-
-.PP
-\fIvoid\f[] \fBcmark_parser_free\f[](\fIcmark_parser *parser\f[])
-
-.PP
-Frees memory allocated for a parser object.
-
-.PP
-\fIvoid\f[] \fBcmark_parser_feed\f[](\fIcmark_parser *parser\f[], \fIconst char *buffer\f[], \fIsize_t len\f[])
-
-.PP
-Feeds a string of length \f[I]len\f[] to \f[I]parser\f[].
-
-.PP
-\fIcmark_node *\f[] \fBcmark_parser_finish\f[](\fIcmark_parser *parser\f[])
-
-.PP
-Finish parsing and return a pointer to a tree of nodes.
-
-.PP
-\fIcmark_node *\f[] \fBcmark_parse_document\f[](\fIconst char *buffer\f[], \fIsize_t len\f[], \fIint options\f[])
-
-.PP
-Parse a CommonMark document in \f[I]buffer\f[] of length
-\f[I]len\f[]. Returns a pointer to a tree of nodes. The memory
-allocated for the node tree should be released using
-\f[I]cmark_node_free\f[] when it is no longer needed.
-
-.PP
-\fIcmark_node *\f[] \fBcmark_parse_file\f[](\fIFILE *f\f[], \fIint options\f[])
-
-.PP
-Parse a CommonMark document in file \f[I]f\f[], returning a
-pointer to a tree of nodes. The memory allocated for the node
-tree should be released using \f[I]cmark_node_free\f[] when it is
-no longer needed.
-
-.SS
-Rendering
-
-.PP
-\fIchar *\f[] \fBcmark_render_xml\f[](\fIcmark_node *root\f[], \fIint options\f[])
-
-.PP
-Render a \f[I]node\f[] tree as XML. It is the caller's
-responsibility to free the returned buffer.
-
-.PP
-\fIchar *\f[] \fBcmark_render_html\f[](\fIcmark_node *root\f[], \fIint options\f[])
-
-.PP
-Render a \f[I]node\f[] tree as an HTML fragment. It is up to the
-user to add an appropriate header and footer. It is the caller's
-responsibility to free the returned buffer.
-
-.PP
-\fIchar *\f[] \fBcmark_render_man\f[](\fIcmark_node *root\f[], \fIint options\f[], \fIint width\f[])
-
-.PP
-Render a \f[I]node\f[] tree as a groff man page, without the
-header. It is the caller's responsibility to free the returned
-buffer.
-
-.PP
-\fIchar *\f[] \fBcmark_render_commonmark\f[](\fIcmark_node *root\f[], \fIint options\f[], \fIint width\f[])
-
-.PP
-Render a \f[I]node\f[] tree as a commonmark document. It is the
-caller's responsibility to free the returned buffer.
-
-.PP
-\fIchar *\f[] \fBcmark_render_latex\f[](\fIcmark_node *root\f[], \fIint options\f[], \fIint width\f[])
-
-.PP
-Render a \f[I]node\f[] tree as a LaTeX document. It is the
-caller's responsibility to free the returned buffer.
-
-.SS
-Options
-
-.PP
-.nf
-\fC
-.RS 0n
-#define CMARK_OPT_DEFAULT 0
-.RE
-\f[]
-.fi
-
-.PP
-Default options.
-
-.SS
-Options affecting rendering
-
-.PP
-.nf
-\fC
-.RS 0n
-#define CMARK_OPT_SOURCEPOS (1 << 1)
-.RE
-\f[]
-.fi
-
-.PP
-Include a \f[C]data\-sourcepos\f[] attribute on all block
-elements.
-
-.PP
-.nf
-\fC
-.RS 0n
-#define CMARK_OPT_HARDBREAKS (1 << 2)
-.RE
-\f[]
-.fi
-
-.PP
-Render \f[C]softbreak\f[] elements as hard line breaks.
-
-.PP
-.nf
-\fC
-.RS 0n
-#define CMARK_OPT_SAFE (1 << 3)
-.RE
-\f[]
-.fi
-
-.PP
-\f[C]CMARK_OPT_SAFE\f[] is defined here for API compatibility,
-but it no longer has any effect. "Safe" mode is now the default:
-set \f[C]CMARK_OPT_UNSAFE\f[] to disable it.
-
-.PP
-.nf
-\fC
-.RS 0n
-#define CMARK_OPT_UNSAFE (1 << 17)
-.RE
-\f[]
-.fi
-
-.PP
-Render raw HTML and unsafe links (\f[C]javascript:\f[],
-\f[C]vbscript:\f[], \f[C]file:\f[], and \f[C]data:\f[], except
-for \f[C]image/png\f[], \f[C]image/gif\f[], \f[C]image/jpeg\f[],
-or \f[C]image/webp\f[] mime types). By default, raw HTML is
-replaced by a placeholder HTML comment. Unsafe links are replaced
-by empty strings.
-
-.PP
-.nf
-\fC
-.RS 0n
-#define CMARK_OPT_NOBREAKS (1 << 4)
-.RE
-\f[]
-.fi
-
-.PP
-Render \f[C]softbreak\f[] elements as spaces.
-
-.SS
-Options affecting parsing
-
-.PP
-.nf
-\fC
-.RS 0n
-#define CMARK_OPT_NORMALIZE (1 << 8)
-.RE
-\f[]
-.fi
-
-.PP
-Legacy option (no effect).
-
-.PP
-.nf
-\fC
-.RS 0n
-#define CMARK_OPT_VALIDATE_UTF8 (1 << 9)
-.RE
-\f[]
-.fi
-
-.PP
-Validate UTF\-8 in the input before parsing, replacing illegal
-sequences with the replacement character U+FFFD.
-
-.PP
-.nf
-\fC
-.RS 0n
-#define CMARK_OPT_SMART (1 << 10)
-.RE
-\f[]
-.fi
-
-.PP
-Convert straight quotes to curly, \-\-\- to em dashes, \-\- to en
-dashes.
-
-.SS
-Version information
-
-.PP
-\fIint\f[] \fBcmark_version\f[](\fIvoid\f[])
-
-.PP
-The library version as integer for runtime checks. Also available
-as macro CMARK_VERSION for compile time checks.
-.IP \[bu] 2
-Bits 16\-23 contain the major version.
-.IP \[bu] 2
-Bits 8\-15 contain the minor version.
-.IP \[bu] 2
-Bits 0\-7 contain the patchlevel.
-.PP
-In hexadecimal format, the number 0x010203 represents
-version 1.2.3.
-
-.PP
-\fIconst char *\f[] \fBcmark_version_string\f[](\fIvoid\f[])
-
-.PP
-The library version string for runtime checks. Also available as
-macro CMARK_VERSION_STRING for compile time checks.
-
-.SH
-AUTHORS
-.PP
-John MacFarlane, Vicent Marti, Kārlis Gaņģis, Nick Wellnhofer.
-