aboutsummaryrefslogtreecommitdiff
path: root/man/man3/cmark.3
blob: 7f70972090ac9e202c5f494b65e4db84ee13d3d8 (plain)
  1. .TH cmark 3 "December 12, 2014" "LOCAL" "Library Functions Manual"
  2. .SH NAME
  3. .B cmark
  4. \- CommonMark parsing, manipulating, and rendering
  5. .SH SIMPLE INTERFACE
  6. .nf
  7. \f[C]
  8. .RS 0n
  9. #define CMARK_VERSION "0.1"
  10. .RE
  11. \f[]
  12. .fi
  13. .PP
  14. Current version of library.
  15. \fIchar *\fR \fBcmark_markdown_to_html\fR(\fIconst char *text\fR, \fIint len\fR)
  16. .PP
  17. Convert \fItext\fR (assumed to be a UTF-8 encoded string with length
  18. \fIlen\fR from CommonMark Markdown to HTML, returning a null-terminated,
  19. UTF-8-encoded string.
  20. .SH NODE STRUCTURE
  21. .nf
  22. \f[C]
  23. .RS 0n
  24. typedef enum {
  25. /* Error status */
  26. CMARK_NODE_NONE,
  27. /* Block */
  28. CMARK_NODE_DOCUMENT,
  29. CMARK_NODE_BLOCK_QUOTE,
  30. CMARK_NODE_LIST,
  31. CMARK_NODE_LIST_ITEM,
  32. CMARK_NODE_CODE_BLOCK,
  33. CMARK_NODE_HTML,
  34. CMARK_NODE_PARAGRAPH,
  35. CMARK_NODE_HEADER,
  36. CMARK_NODE_HRULE,
  37. CMARK_NODE_REFERENCE_DEF,
  38. CMARK_NODE_FIRST_BLOCK = CMARK_NODE_DOCUMENT,
  39. CMARK_NODE_LAST_BLOCK = CMARK_NODE_REFERENCE_DEF,
  40. /* Inline */
  41. CMARK_NODE_TEXT,
  42. CMARK_NODE_SOFTBREAK,
  43. CMARK_NODE_LINEBREAK,
  44. CMARK_NODE_INLINE_CODE,
  45. CMARK_NODE_INLINE_HTML,
  46. CMARK_NODE_EMPH,
  47. CMARK_NODE_STRONG,
  48. CMARK_NODE_LINK,
  49. CMARK_NODE_IMAGE,
  50. CMARK_NODE_FIRST_INLINE = CMARK_NODE_TEXT,
  51. CMARK_NODE_LAST_INLINE = CMARK_NODE_IMAGE,
  52. } cmark_node_type;
  53. .RE
  54. \f[]
  55. .fi
  56. .PP
  57. .nf
  58. \f[C]
  59. .RS 0n
  60. typedef enum {
  61. CMARK_NO_LIST,
  62. CMARK_BULLET_LIST,
  63. CMARK_ORDERED_LIST
  64. } cmark_list_type;
  65. .RE
  66. \f[]
  67. .fi
  68. .PP
  69. .nf
  70. \f[C]
  71. .RS 0n
  72. typedef enum {
  73. CMARK_PERIOD_DELIM,
  74. CMARK_PAREN_DELIM
  75. } cmark_delim_type;
  76. .RE
  77. \f[]
  78. .fi
  79. .PP
  80. .SH CREATING AND DESTROYING NODES
  81. \fIcmark_node*\fR \fBcmark_node_new\fR(\fIcmark_node_type type\fR)
  82. .PP
  83. \fIvoid\fR \fBcmark_node_free\fR(\fIcmark_node *node\fR)
  84. .PP
  85. \fIcmark_node*\fR \fBcmark_node_next\fR(\fIcmark_node *node\fR)
  86. .PP
  87. .SH TREE TRAVERSAL
  88. \fIcmark_node*\fR \fBcmark_node_previous\fR(\fIcmark_node *node\fR)
  89. .PP
  90. \fIcmark_node*\fR \fBcmark_node_parent\fR(\fIcmark_node *node\fR)
  91. .PP
  92. \fIcmark_node*\fR \fBcmark_node_first_child\fR(\fIcmark_node *node\fR)
  93. .PP
  94. \fIcmark_node*\fR \fBcmark_node_last_child\fR(\fIcmark_node *node\fR)
  95. .PP
  96. .SH ACCESSORS
  97. \fIcmark_node_type\fR \fBcmark_node_get_type\fR(\fIcmark_node *node\fR)
  98. .PP
  99. \fIconst char*\fR \fBcmark_node_get_string_content\fR(\fIcmark_node *node\fR)
  100. .PP
  101. \fIint\fR \fBcmark_node_set_string_content\fR(\fIcmark_node *node\fR, \fIconst char *content\fR)
  102. .PP
  103. \fIint\fR \fBcmark_node_get_header_level\fR(\fIcmark_node *node\fR)
  104. .PP
  105. \fIint\fR \fBcmark_node_set_header_level\fR(\fIcmark_node *node\fR, \fIint level\fR)
  106. .PP
  107. \fIcmark_list_type\fR \fBcmark_node_get_list_type\fR(\fIcmark_node *node\fR)
  108. .PP
  109. \fIint\fR \fBcmark_node_set_list_type\fR(\fIcmark_node *node\fR, \fIcmark_list_type type\fR)
  110. .PP
  111. \fIint\fR \fBcmark_node_get_list_start\fR(\fIcmark_node *node\fR)
  112. .PP
  113. \fIint\fR \fBcmark_node_set_list_start\fR(\fIcmark_node *node\fR, \fIint start\fR)
  114. .PP
  115. \fIint\fR \fBcmark_node_get_list_tight\fR(\fIcmark_node *node\fR)
  116. .PP
  117. \fIint\fR \fBcmark_node_set_list_tight\fR(\fIcmark_node *node\fR, \fIint tight\fR)
  118. .PP
  119. \fIconst char*\fR \fBcmark_node_get_fence_info\fR(\fIcmark_node *node\fR)
  120. .PP
  121. \fIint\fR \fBcmark_node_set_fence_info\fR(\fIcmark_node *node\fR, \fIconst char *info\fR)
  122. .PP
  123. \fIconst char*\fR \fBcmark_node_get_url\fR(\fIcmark_node *node\fR)
  124. .PP
  125. \fIint\fR \fBcmark_node_set_url\fR(\fIcmark_node *node\fR, \fIconst char *url\fR)
  126. .PP
  127. \fIconst char*\fR \fBcmark_node_get_title\fR(\fIcmark_node *node\fR)
  128. .PP
  129. \fIint\fR \fBcmark_node_set_title\fR(\fIcmark_node *node\fR, \fIconst char *title\fR)
  130. .PP
  131. \fIint\fR \fBcmark_node_get_start_line\fR(\fIcmark_node *node\fR)
  132. .PP
  133. \fIint\fR \fBcmark_node_get_start_column\fR(\fIcmark_node *node\fR)
  134. .PP
  135. \fIint\fR \fBcmark_node_get_end_line\fR(\fIcmark_node *node\fR)
  136. .PP
  137. .SH TREE MANIPULATION
  138. \fIvoid\fR \fBcmark_node_unlink\fR(\fIcmark_node *node\fR)
  139. .PP
  140. \fIint\fR \fBcmark_node_insert_before\fR(\fIcmark_node *node\fR, \fIcmark_node *sibling\fR)
  141. .PP
  142. \fIint\fR \fBcmark_node_insert_after\fR(\fIcmark_node *node\fR, \fIcmark_node *sibling\fR)
  143. .PP
  144. \fIint\fR \fBcmark_node_prepend_child\fR(\fIcmark_node *node\fR, \fIcmark_node *child\fR)
  145. .PP
  146. \fIint\fR \fBcmark_node_append_child\fR(\fIcmark_node *node\fR, \fIcmark_node *child\fR)
  147. .PP
  148. .SH PARSING
  149. \fIcmark_parser *\fR \fBcmark_parser_new\fR(\fI\fR)
  150. .PP
  151. \fIvoid\fR \fBcmark_parser_free\fR(\fIcmark_parser *parser\fR)
  152. .PP
  153. \fIcmark_node *\fR \fBcmark_parser_finish\fR(\fIcmark_parser *parser\fR)
  154. .PP
  155. \fIvoid\fR \fBcmark_parser_feed\fR(\fIcmark_parser *parser\fR, \fIconst char *buffer\fR, \fIsize_t len\fR)
  156. .PP
  157. \fIcmark_node *\fR \fBcmark_parse_document\fR(\fIconst char *buffer\fR, \fIsize_t len\fR)
  158. .PP
  159. \fIcmark_node *\fR \fBcmark_parse_file\fR(\fIFILE *f\fR)
  160. .PP
  161. .SH RENDERING
  162. \fIchar *\fR \fBcmark_render_ast\fR(\fIcmark_node *root\fR)
  163. .PP
  164. \fIchar *\fR \fBcmark_render_html\fR(\fIcmark_node *root\fR)
  165. .PP
  166. \fIint\fR \fBcmark_walk\fR(\fIcmark_node *root\fR, \fIcmark_node_handler handler\fR, \fIvoid *state\fR)
  167. .PP
  168. Walks the tree starting from root, applying handler to each node.
  169. Nodes that can have children are visited twice, once on the way in
  170. and once on the way out. handler is a function that takes a node
  171. pointer, an integer direction (1 for entering, 0 for leaving),
  172. and a pointer to a state structure that can be consulted and
  173. updated by the handler. The handler should return 1 on success,
  174. 0 on failure. cmark_walk returns 1 if it traversed the entire
  175. tree, 0 if it quit early in response to a 0 status from the
  176. handler.
  177. .SH AUTHORS
  178. John MacFarlane, Vicent Marti, Kārlis Gaņģis, Nick Wellnhofer.