From 0479ddaeb0f54f960db0537ee1f39702ae400eb8 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Wed, 17 Dec 2014 11:16:49 -0800 Subject: Create cmark.3 in cmake build process. Remove it from the repository. Closes #241. --- man/CMakeLists.txt | 25 +++- man/make_man_page.py | 6 +- man/man3/cmark.3 | 403 --------------------------------------------------- 3 files changed, 27 insertions(+), 407 deletions(-) delete mode 100644 man/man3/cmark.3 (limited to 'man') diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt index afb8711..2c3f5ef 100644 --- a/man/CMakeLists.txt +++ b/man/CMakeLists.txt @@ -1,5 +1,26 @@ -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/man1/cmark.1 +if (NOT MSVC) + add_custom_target(man ALL + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/cmark.3 + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/cmark.1 + ) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cmark.3 + DEPENDS ${CMAKE_SOURCE_DIR}/src/cmark.h + COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/make_man_page.py + ${CMAKE_SOURCE_DIR}/src/cmark.h > + ${CMAKE_CURRENT_BINARY_DIR}/cmark.3 + ) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cmark.1 + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/man1/cmark.1 + COMMAND cp + ${CMAKE_CURRENT_SOURCE_DIR}/man1/cmark.1 + ${CMAKE_CURRENT_BINARY_DIR}/cmark.1 + ) +endif(NOT MSVC) + +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/cmark.1 DESTINATION share/man/man1) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/man3/cmark.3 +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/cmark.3 DESTINATION share/man/man3) \ No newline at end of file diff --git a/man/make_man_page.py b/man/make_man_page.py index 2a7f9ab..e7c5f69 100644 --- a/man/make_man_page.py +++ b/man/make_man_page.py @@ -2,6 +2,8 @@ # 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[]. @@ -19,9 +21,9 @@ from ctypes import CDLL, c_char_p, c_long, c_void_p sysname = platform.system() if sysname == 'Darwin': - cmark = CDLL("build/src/libcmark.dylib") + cmark = CDLL("../src/libcmark.dylib") else: - cmark = CDLL("build/src/libcmark.so") + cmark = CDLL("../src/libcmark.so") parse_document = cmark.cmark_parse_document parse_document.restype = c_void_p diff --git a/man/man3/cmark.3 b/man/man3/cmark.3 deleted file mode 100644 index f371139..0000000 --- a/man/man3/cmark.3 +++ /dev/null @@ -1,403 +0,0 @@ -.TH cmark 3 "December 16, 2014" "LOCAL" "Library Functions Manual" -.SH -NAME -.PP -\f[B]cmark\f[] \- CommonMark parsing, manipulating, and rendering - -.SH -DESCRIPTION -.SS -Simple Interface - -.PP -.nf -\fC -.RS 0n -#define CMARK_VERSION "0.1" -.RE -\f[] -.fi - -.PP -Current version of library. - -.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 -\fIcmark_iter*\f[] \fBcmark_iter_new\f[](\fIcmark_node *root\f[]) - -.PP -Creates a new iterator starting at \f[I]root\f[]\&. - -.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 -Returns the event type (\f[C]CMARK_EVENT_ENTER\f[], \f[C]CMARK_EVENT_EXIT\f[], -or \f[C]CMARK_EVENT_DONE\f[]) for the next node. - -.PP -\fIcmark_node*\f[] \fBcmark_iter_get_node\f[](\fIcmark_iter *iter\f[]) - -.PP -Returns the next node in the sequence described above. - -.SS -Accessors - -.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_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 -\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. - -.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. - -.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_ast\f[](\fIcmark_node *root\f[]) - -.PP -Render a \f[I]node\f[] tree for debugging purposes, showing -the hierachy of nodes and their types and contents. - -.PP -\fIchar *\f[] \fBcmark_render_html\f[](\fIcmark_node *root\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[]) - -.PP -Render a \f[I]node\f[] tree as a groff man page, without the header. - -.SH -AUTHORS -.PP -John MacFarlane, Vicent Marti, Kārlis Gaņģis, Nick Wellnhofer. - -- cgit v1.2.3