aboutsummaryrefslogtreecommitdiff
path: root/man
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2015-01-24 21:35:03 -0800
committerJohn MacFarlane <jgm@berkeley.edu>2015-01-24 21:39:07 -0800
commit829b089c80895d9a78938c5bc7747aea1cd48eb6 (patch)
tree53bd534741a90c547c5d87039efa5ee625da8081 /man
parent5ef31853d5161d4b5a2dfc0df94e6eaaeb3215d0 (diff)
Removed implementation-specific material from repository.
The C and JS implementations are being split off into different repositories. This repository will just have the spec itself.
Diffstat (limited to 'man')
-rw-r--r--man/CMakeLists.txt8
-rw-r--r--man/make_man_page.py131
-rw-r--r--man/man1/cmark.141
-rw-r--r--man/man3/cmark.3564
4 files changed, 0 insertions, 744 deletions
diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt
deleted file mode 100644
index 443996e..0000000
--- a/man/CMakeLists.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-if (NOT MSVC)
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/man1/cmark.1
- DESTINATION share/man/man1)
-
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/man3/cmark.3
- DESTINATION share/man/man3)
-endif(NOT MSVC)
-
diff --git a/man/make_man_page.py b/man/make_man_page.py
deleted file mode 100644
index fe968b4..0000000
--- a/man/make_man_page.py
+++ /dev/null
@@ -1,131 +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]
-
-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')
- else:
- textbytes = text
- textlen = len(text)
- return render_man(parse_document(textbytes, textlen))
-
-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 state == 'man':
- state = 'signature'
- typedef = typedef_start_re.match(line)
-
- # 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/man/man1/cmark.1 b/man/man1/cmark.1
deleted file mode 100644
index c425b8c..0000000
--- a/man/man1/cmark.1
+++ /dev/null
@@ -1,41 +0,0 @@
-.TH "cmark" "1" "November 30, 2014" "LOCAL" "General Commands Manual"
-.SH "NAME"
-\fBcmark\fR
-\- convert CommonMark formatted text to HTML
-.SH "SYNOPSIS"
-.HP 6n
-\fBcmark\fR
-[\fB\-\-ast\fR]
-file*
-.SH "DESCRIPTION"
-\fBcmark\fR
-acts as a pipe, reading from
-\fRstdin\fR
-or from the specified files and writing to
-\fRstdout\fR.
-It converts Markdown formatted plain text to HTML (or groff man or
-an abstract representation of the AST), using the conventions
-described in the CommonMark spec.
-If multiple files are specified, the contents of the files are simply
-concatenated before parsing.
-.SH "OPTIONS"
-.TP 12n
-\-\-to, \-t \f[I]FORMAT\f[]
-Specify output format (\f[C]html\f[], \f[C]man\f[], \f[C]ast\f[]).
-.TP 12n
-\-\-sourcepos
-Include source position attribute.
-.TP 12n
-\-\-hardbreaks
-Treat newlines as hard line breaks.
-.TP 12n
-\-\-normalize
-Consolidate adjacent text nodes.
-.TP 12n
-\-\-help
-Print usage information.
-.TP 12n
-\-\-version
-Print version.
-.SH "AUTHORS"
-John MacFarlane
diff --git a/man/man3/cmark.3 b/man/man3/cmark.3
deleted file mode 100644
index 4b24391..0000000
--- a/man/man3/cmark.3
+++ /dev/null
@@ -1,564 +0,0 @@
-.TH cmark 3 "January 23, 2015" "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[], \fIint len\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.
-
-.SS
-Node Structure
-
-.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
-\fIvoid\f[] \fBcmark_node_free\f[](\fIcmark_node *node\f[])
-
-.PP
-Frees the memory allocated for a node.
-
-.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 headers 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
-.IP \[bu] 2
-CMARK_NODE_HRULE
-.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_INLINE_HTML
-.PP
-Nodes must only be modified after an \f[C]EXIT\f[] event, or an \f[C]ENTER\f[] event for
-leaf nodes.
-
-.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[C]cmark_iter_next\f[] is called for the first time.
-
-.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 NULL if none.
-
-.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_header_level\f[](\fIcmark_node *node\f[])
-
-.PP
-Returns the header level of \f[I]node\f[], or 0 if \f[I]node\f[] 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 \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, or NULL if none.
-
-.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
-Gets the URL of a link or image \f[I]node\f[], or NULL if none.
-
-.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
-Gets the title of a link or image \f[I]node\f[], or NULL if none.
-
-.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
-\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_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*", 12);
-\f[]
-.fi
-.PP
-Streaming interface:
-.IP
-.nf
-\f[C]
-cmark_parser *parser = cmark_parser_new();
-FILE *fp = fopen("myfile.md", "r");
-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[](\fI\f[])
-
-.PP
-Creates a new parser object.
-
-.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[])
-
-.PP
-Parse a CommonMark document in \f[I]buffer\f[] of length \f[I]len\f[]\&.
-Returns a pointer to a tree of nodes.
-
-.PP
-\fIcmark_node *\f[] \fBcmark_parse_file\f[](\fIFILE *f\f[])
-
-.PP
-Parse a CommonMark document in file \f[I]f\f[], returning a pointer to
-a tree of nodes.
-
-.SS
-Rendering
-
-.PP
-\fIchar *\f[] \fBcmark_render_xml\f[](\fIcmark_node *root\f[], \fIlong options\f[])
-
-.PP
-Render a \f[I]node\f[] tree as XML.
-
-.PP
-\fIchar *\f[] \fBcmark_render_html\f[](\fIcmark_node *root\f[], \fIlong 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.
-
-.PP
-\fIchar *\f[] \fBcmark_render_man\f[](\fIcmark_node *root\f[], \fIlong options\f[])
-
-.PP
-Render a \f[I]node\f[] tree as a groff man page, without the header.
-
-.PP
-.nf
-\fC
-.RS 0n
-#define CMARK_OPT_DEFAULT 0
-.RE
-\f[]
-.fi
-
-.PP
-Default writer options.
-
-.PP
-.nf
-\fC
-.RS 0n
-#define CMARK_OPT_SOURCEPOS 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 2
-.RE
-\f[]
-.fi
-
-.PP
-Render \f[C]softbreak\f[] elements as hard line breaks.
-
-.PP
-.nf
-\fC
-.RS 0n
-#define CMARK_OPT_NORMALIZE 4
-.RE
-\f[]
-.fi
-
-.PP
-Normalize tree by consolidating adjacent text nodes.
-
-.SS
-Version information
-
-.PP
-.nf
-\fC
-.RS 0n
-extern const int cmark_version;
-.RE
-\f[]
-.fi
-
-.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
-.nf
-\fC
-.RS 0n
-extern const char cmark_version_string[];
-.RE
-\f[]
-.fi
-
-.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.
-