aboutsummaryrefslogtreecommitdiff
path: root/man/man3/cmark.3
blob: 4a28e4a87878cbcc457eea4d40569d891ea95733 (plain)
  1. .TH cmark 3 "December 13, 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_FIRST_BLOCK = CMARK_NODE_DOCUMENT,
  38. CMARK_NODE_LAST_BLOCK = CMARK_NODE_HRULE,
  39. /* Inline */
  40. CMARK_NODE_TEXT,
  41. CMARK_NODE_SOFTBREAK,
  42. CMARK_NODE_LINEBREAK,
  43. CMARK_NODE_INLINE_CODE,
  44. CMARK_NODE_INLINE_HTML,
  45. CMARK_NODE_EMPH,
  46. CMARK_NODE_STRONG,
  47. CMARK_NODE_LINK,
  48. CMARK_NODE_IMAGE,
  49. CMARK_NODE_FIRST_INLINE = CMARK_NODE_TEXT,
  50. CMARK_NODE_LAST_INLINE = CMARK_NODE_IMAGE,
  51. } cmark_node_type;
  52. .RE
  53. \f[]
  54. .fi
  55. .PP
  56. .nf
  57. \f[C]
  58. .RS 0n
  59. typedef enum {
  60. CMARK_NO_LIST,
  61. CMARK_BULLET_LIST,
  62. CMARK_ORDERED_LIST
  63. } cmark_list_type;
  64. .RE
  65. \f[]
  66. .fi
  67. .PP
  68. .nf
  69. \f[C]
  70. .RS 0n
  71. typedef enum {
  72. CMARK_PERIOD_DELIM,
  73. CMARK_PAREN_DELIM
  74. } cmark_delim_type;
  75. .RE
  76. \f[]
  77. .fi
  78. .PP
  79. .SH CREATING AND DESTROYING NODES
  80. \fIcmark_node*\fR \fBcmark_node_new\fR(\fIcmark_node_type type\fR)
  81. .PP
  82. \fIvoid\fR \fBcmark_node_free\fR(\fIcmark_node *node\fR)
  83. .PP
  84. \fIcmark_node*\fR \fBcmark_node_next\fR(\fIcmark_node *node\fR)
  85. .PP
  86. .SH TREE TRAVERSAL
  87. \fIcmark_node*\fR \fBcmark_node_previous\fR(\fIcmark_node *node\fR)
  88. .PP
  89. \fIcmark_node*\fR \fBcmark_node_parent\fR(\fIcmark_node *node\fR)
  90. .PP
  91. \fIcmark_node*\fR \fBcmark_node_first_child\fR(\fIcmark_node *node\fR)
  92. .PP
  93. \fIcmark_node*\fR \fBcmark_node_last_child\fR(\fIcmark_node *node\fR)
  94. .PP
  95. .SH ACCESSORS
  96. \fIcmark_node_type\fR \fBcmark_node_get_type\fR(\fIcmark_node *node\fR)
  97. .PP
  98. \fIconst char*\fR \fBcmark_node_get_string_content\fR(\fIcmark_node *node\fR)
  99. .PP
  100. \fIint\fR \fBcmark_node_set_string_content\fR(\fIcmark_node *node\fR, \fIconst char *content\fR)
  101. .PP
  102. \fIint\fR \fBcmark_node_get_header_level\fR(\fIcmark_node *node\fR)
  103. .PP
  104. \fIint\fR \fBcmark_node_set_header_level\fR(\fIcmark_node *node\fR, \fIint level\fR)
  105. .PP
  106. \fIcmark_list_type\fR \fBcmark_node_get_list_type\fR(\fIcmark_node *node\fR)
  107. .PP
  108. \fIint\fR \fBcmark_node_set_list_type\fR(\fIcmark_node *node\fR, \fIcmark_list_type type\fR)
  109. .PP
  110. \fIint\fR \fBcmark_node_get_list_start\fR(\fIcmark_node *node\fR)
  111. .PP
  112. \fIint\fR \fBcmark_node_set_list_start\fR(\fIcmark_node *node\fR, \fIint start\fR)
  113. .PP
  114. \fIint\fR \fBcmark_node_get_list_tight\fR(\fIcmark_node *node\fR)
  115. .PP
  116. \fIint\fR \fBcmark_node_set_list_tight\fR(\fIcmark_node *node\fR, \fIint tight\fR)
  117. .PP
  118. \fIconst char*\fR \fBcmark_node_get_fence_info\fR(\fIcmark_node *node\fR)
  119. .PP
  120. \fIint\fR \fBcmark_node_set_fence_info\fR(\fIcmark_node *node\fR, \fIconst char *info\fR)
  121. .PP
  122. \fIconst char*\fR \fBcmark_node_get_url\fR(\fIcmark_node *node\fR)
  123. .PP
  124. \fIint\fR \fBcmark_node_set_url\fR(\fIcmark_node *node\fR, \fIconst char *url\fR)
  125. .PP
  126. \fIconst char*\fR \fBcmark_node_get_title\fR(\fIcmark_node *node\fR)
  127. .PP
  128. \fIint\fR \fBcmark_node_set_title\fR(\fIcmark_node *node\fR, \fIconst char *title\fR)
  129. .PP
  130. \fIint\fR \fBcmark_node_get_start_line\fR(\fIcmark_node *node\fR)
  131. .PP
  132. \fIint\fR \fBcmark_node_get_start_column\fR(\fIcmark_node *node\fR)
  133. .PP
  134. \fIint\fR \fBcmark_node_get_end_line\fR(\fIcmark_node *node\fR)
  135. .PP
  136. .SH TREE MANIPULATION
  137. \fIvoid\fR \fBcmark_node_unlink\fR(\fIcmark_node *node\fR)
  138. .PP
  139. \fIint\fR \fBcmark_node_insert_before\fR(\fIcmark_node *node\fR, \fIcmark_node *sibling\fR)
  140. .PP
  141. \fIint\fR \fBcmark_node_insert_after\fR(\fIcmark_node *node\fR, \fIcmark_node *sibling\fR)
  142. .PP
  143. \fIint\fR \fBcmark_node_prepend_child\fR(\fIcmark_node *node\fR, \fIcmark_node *child\fR)
  144. .PP
  145. \fIint\fR \fBcmark_node_append_child\fR(\fIcmark_node *node\fR, \fIcmark_node *child\fR)
  146. .PP
  147. .SH PARSING
  148. \fIcmark_parser *\fR \fBcmark_parser_new\fR(\fI\fR)
  149. .PP
  150. \fIvoid\fR \fBcmark_parser_free\fR(\fIcmark_parser *parser\fR)
  151. .PP
  152. \fIcmark_node *\fR \fBcmark_parser_finish\fR(\fIcmark_parser *parser\fR)
  153. .PP
  154. \fIvoid\fR \fBcmark_parser_feed\fR(\fIcmark_parser *parser\fR, \fIconst char *buffer\fR, \fIsize_t len\fR)
  155. .PP
  156. \fIcmark_node *\fR \fBcmark_parse_document\fR(\fIconst char *buffer\fR, \fIsize_t len\fR)
  157. .PP
  158. \fIcmark_node *\fR \fBcmark_parse_file\fR(\fIFILE *f\fR)
  159. .PP
  160. .SH RENDERING
  161. \fIchar *\fR \fBcmark_render_ast\fR(\fIcmark_node *root\fR)
  162. .PP
  163. \fIchar *\fR \fBcmark_render_html\fR(\fIcmark_node *root\fR)
  164. .PP
  165. \fIint\fR \fBcmark_walk\fR(\fIcmark_node *root\fR, \fIcmark_node_handler handler\fR, \fIvoid *state\fR)
  166. .PP
  167. Walks the tree starting from root, applying handler to each node.
  168. Nodes that can have children are visited twice, once on the way in
  169. and once on the way out. handler is a function that takes a node
  170. pointer, a cmark_event_type,
  171. and a pointer to a state structure that can be consulted and
  172. updated by the handler. The handler should return 1 on success,
  173. 0 on failure. cmark_walk returns 1 if it traversed the entire
  174. tree, 0 if it quit early in response to a 0 status from the
  175. handler.
  176. .SH AUTHORS
  177. John MacFarlane, Vicent Marti, Kārlis Gaņģis, Nick Wellnhofer.