aboutsummaryrefslogtreecommitdiff
path: root/man/man3/cmark.3
blob: 9d24f73e2a42146a7265bec904110e38529744bd (plain)
  1. .Dd 2014-11-30
  2. .Dt cmark.h
  3. .Sh NAME
  4. .Nm cmark
  5. .Nd CommonMark parsing, manipulating, and rendering
  6. .Sh SIMPLE INTERFACE
  7. .Bd -literal
  8. #define CMARK_VERSION "0.1"
  9. .Ed
  10. Current version of library.
  11. .Ft char *
  12. .Fo cmark_markdown_to_html
  13. .Fa const char *text, int len
  14. .Fc
  15. Convert
  16. .Fa text
  17. (assumed to be a UTF-8 encoded string with length
  18. .Fa len )
  19. from CommonMark Markdown to HTML, returning a null-terminated,
  20. UTF-8-encoded string.
  21. .Sh NODE STRUCTURE
  22. .Bd -literal
  23. typedef enum {
  24. /* Block */
  25. CMARK_NODE_DOCUMENT,
  26. CMARK_NODE_BLOCK_QUOTE,
  27. CMARK_NODE_LIST,
  28. CMARK_NODE_LIST_ITEM,
  29. CMARK_NODE_CODE_BLOCK,
  30. CMARK_NODE_HTML,
  31. CMARK_NODE_PARAGRAPH,
  32. CMARK_NODE_HEADER,
  33. CMARK_NODE_HRULE,
  34. CMARK_NODE_REFERENCE_DEF,
  35. CMARK_NODE_FIRST_BLOCK = CMARK_NODE_DOCUMENT,
  36. CMARK_NODE_LAST_BLOCK = CMARK_NODE_REFERENCE_DEF,
  37. /* Inline */
  38. CMARK_NODE_TEXT,
  39. CMARK_NODE_SOFTBREAK,
  40. CMARK_NODE_LINEBREAK,
  41. CMARK_NODE_INLINE_CODE,
  42. CMARK_NODE_INLINE_HTML,
  43. CMARK_NODE_EMPH,
  44. CMARK_NODE_STRONG,
  45. CMARK_NODE_LINK,
  46. CMARK_NODE_IMAGE,
  47. CMARK_NODE_FIRST_INLINE = CMARK_NODE_TEXT,
  48. CMARK_NODE_LAST_INLINE = CMARK_NODE_IMAGE,
  49. } cmark_node_type;
  50. .Ed
  51. .Bd -literal
  52. typedef enum {
  53. CMARK_NO_LIST,
  54. CMARK_BULLET_LIST,
  55. CMARK_ORDERED_LIST
  56. } cmark_list_type;
  57. .Ed
  58. .Bd -literal
  59. typedef enum {
  60. CMARK_PERIOD_DELIM,
  61. CMARK_PAREN_DELIM
  62. } cmark_delim_type;
  63. .Ed
  64. .Sh CREATING AND DESTORYING NODES
  65. .Ft cmark_node*
  66. .Fo cmark_node_new
  67. .Fa cmark_node_type type
  68. .Fc
  69. .Ft void
  70. .Fo cmark_node_free
  71. .Fa cmark_node *node
  72. .Fc
  73. .Ft cmark_node*
  74. .Fo cmark_node_next
  75. .Fa cmark_node *node
  76. .Fc
  77. .Sh TREE TRAVERSAL
  78. .Ft cmark_node*
  79. .Fo cmark_node_previous
  80. .Fa cmark_node *node
  81. .Fc
  82. .Ft cmark_node*
  83. .Fo cmark_node_parent
  84. .Fa cmark_node *node
  85. .Fc
  86. .Ft cmark_node*
  87. .Fo cmark_node_first_child
  88. .Fa cmark_node *node
  89. .Fc
  90. .Ft cmark_node*
  91. .Fo cmark_node_last_child
  92. .Fa cmark_node *node
  93. .Fc
  94. .Sh ACCESSORS
  95. .Ft cmark_node_type
  96. .Fo cmark_node_get_type
  97. .Fa cmark_node *node
  98. .Fc
  99. .Ft const char*
  100. .Fo cmark_node_get_string_content
  101. .Fa cmark_node *node
  102. .Fc
  103. .Ft int
  104. .Fo cmark_node_set_string_content
  105. .Fa cmark_node *node, const char *content
  106. .Fc
  107. .Ft int
  108. .Fo cmark_node_get_header_level
  109. .Fa cmark_node *node
  110. .Fc
  111. .Ft int
  112. .Fo cmark_node_set_header_level
  113. .Fa cmark_node *node, int level
  114. .Fc
  115. .Ft cmark_list_type
  116. .Fo cmark_node_get_list_type
  117. .Fa cmark_node *node
  118. .Fc
  119. .Ft int
  120. .Fo cmark_node_set_list_type
  121. .Fa cmark_node *node, cmark_list_type type
  122. .Fc
  123. .Ft int
  124. .Fo cmark_node_get_list_start
  125. .Fa cmark_node *node
  126. .Fc
  127. .Ft int
  128. .Fo cmark_node_set_list_start
  129. .Fa cmark_node *node, int start
  130. .Fc
  131. .Ft int
  132. .Fo cmark_node_get_list_tight
  133. .Fa cmark_node *node
  134. .Fc
  135. .Ft int
  136. .Fo cmark_node_set_list_tight
  137. .Fa cmark_node *node, int tight
  138. .Fc
  139. .Ft const char*
  140. .Fo cmark_node_get_fence_info
  141. .Fa cmark_node *node
  142. .Fc
  143. .Ft int
  144. .Fo cmark_node_set_fence_info
  145. .Fa cmark_node *node, const char *info
  146. .Fc
  147. .Ft const char*
  148. .Fo cmark_node_get_url
  149. .Fa cmark_node *node
  150. .Fc
  151. .Ft int
  152. .Fo cmark_node_set_url
  153. .Fa cmark_node *node, const char *url
  154. .Fc
  155. .Ft const char*
  156. .Fo cmark_node_get_title
  157. .Fa cmark_node *node
  158. .Fc
  159. .Ft int
  160. .Fo cmark_node_set_title
  161. .Fa cmark_node *node, const char *title
  162. .Fc
  163. .Ft int
  164. .Fo cmark_node_get_start_line
  165. .Fa cmark_node *node
  166. .Fc
  167. .Ft int
  168. .Fo cmark_node_get_start_column
  169. .Fa cmark_node *node
  170. .Fc
  171. .Ft int
  172. .Fo cmark_node_get_end_line
  173. .Fa cmark_node *node
  174. .Fc
  175. .Sh TREE MANIPULATION
  176. .Ft void
  177. .Fo cmark_node_unlink
  178. .Fa cmark_node *node
  179. .Fc
  180. .Ft int
  181. .Fo cmark_node_insert_before
  182. .Fa cmark_node *node, cmark_node *sibling
  183. .Fc
  184. .Ft int
  185. .Fo cmark_node_insert_after
  186. .Fa cmark_node *node, cmark_node *sibling
  187. .Fc
  188. .Ft int
  189. .Fo cmark_node_prepend_child
  190. .Fa cmark_node *node, cmark_node *child
  191. .Fc
  192. .Ft int
  193. .Fo cmark_node_append_child
  194. .Fa cmark_node *node, cmark_node *child
  195. .Fc
  196. .Sh PARSING
  197. .Ft cmark_parser *
  198. .Fo cmark_parser_new
  199. .Fa
  200. .Fc
  201. .Ft void
  202. .Fo cmark_parser_free
  203. .Fa cmark_parser *parser
  204. .Fc
  205. .Ft cmark_node *
  206. .Fo cmark_parser_finish
  207. .Fa cmark_parser *parser
  208. .Fc
  209. .Ft void
  210. .Fo cmark_parser_feed
  211. .Fa cmark_parser *parser, const char *buffer, size_t len
  212. .Fc
  213. .Ft cmark_node *
  214. .Fo cmark_parse_document
  215. .Fa const char *buffer, size_t len
  216. .Fc
  217. .Ft cmark_node *
  218. .Fo cmark_parse_file
  219. .Fa FILE *f
  220. .Fc
  221. .Sh RENDERING
  222. .Ft char *
  223. .Fo cmark_render_ast
  224. .Fa cmark_node *root
  225. .Fc
  226. .Ft char *
  227. .Fo cmark_render_html
  228. .Fa cmark_node *root
  229. .Fc
  230. .Sh AUTHORS
  231. John MacFarlane, Vicent Marti, Kārlis Gaņģis, Nick Wellnhofer.