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