cmark

Unnamed repository; edit this file 'description' to name the repository.

commit 0479ddaeb0f54f960db0537ee1f39702ae400eb8
parent 9bd750ff2dda8fe1fd013bfb749bc2a8038b1c3c
Author: John MacFarlane <jgm@berkeley.edu>
Date:   Wed, 17 Dec 2014 11:16:49 -0800

Create cmark.3 in cmake build process.

Remove it from the repository.  Closes #241.

Diffstat:
MMakefile | 5+----
Mman/CMakeLists.txt | 25+++++++++++++++++++++++--
Mman/make_man_page.py | 6++++--
Dman/man3/cmark.3 | 403-------------------------------------------------------------------------------
4 files changed, 28 insertions(+), 411 deletions(-)
diff --git a/Makefile b/Makefile
@@ -21,7 +21,7 @@ JSMODULES=$(wildcard js/lib/*.js)
 
 .PHONY: all spec leakcheck clean fuzztest dingus upload jshint test testjs benchjs update-site upload-site check npm debug mingw archive tarball ziparchive testarchive testtarball testziparchive testlib bench apidoc
 
-all: $(PROG) man/man1/cmark.1 man/man3/cmark.3
+all: $(PROG)
 	@echo "Binaries can be found in $(BUILDDIR)/src"
 
 $(PROG): $(BUILDDIR)
@@ -74,9 +74,6 @@ archive: spec.html $(BUILDDIR) man/man1/cmark.1 man/man3/cmark.3
 clean:
 	rm -rf $(BUILDDIR) $(MINGW_BUILDDIR) $(MINGW_INSTALLDIR) $(TARBALL) $(ZIPARCHIVE) $(PKGDIR)
 
-man/man3/cmark.3: src/cmark.h $(PROG)
-	python man/make_man_page.py $< > $@
-
 man/man1/cmark.1.html: man/man1/cmark.1
 	groff -mman -Thtml > $@
 
diff --git 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
@@ -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
@@ -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.
-