aboutsummaryrefslogtreecommitdiff
path: root/src/cmark.h
blob: faa0cc0d91f17c9e0afadf2e307fe6461d1c4336 (plain)
  1. #ifndef CMARK_H
  2. #define CMARK_H
  3. #include <stdio.h>
  4. #include "cmark_export.h"
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. #define CMARK_VERSION "0.1"
  9. typedef enum {
  10. CMARK_INL_STRING,
  11. CMARK_INL_SOFTBREAK,
  12. CMARK_INL_LINEBREAK,
  13. CMARK_INL_CODE,
  14. CMARK_INL_RAW_HTML,
  15. CMARK_INL_EMPH,
  16. CMARK_INL_STRONG,
  17. CMARK_INL_LINK,
  18. CMARK_INL_IMAGE
  19. } cmark_inl_tag;
  20. typedef enum {
  21. CMARK_BULLET_LIST,
  22. CMARK_ORDERED_LIST
  23. } cmark_list_type;
  24. typedef enum {
  25. CMARK_PERIOD_DELIM,
  26. CMARK_PAREN_DELIM
  27. } cmark_delim_type;
  28. typedef enum {
  29. CMARK_BLOCK_DOCUMENT,
  30. CMARK_BLOCK_BQUOTE,
  31. CMARK_BLOCK_LIST,
  32. CMARK_BLOCK_LIST_ITEM,
  33. CMARK_BLOCK_FENCED_CODE,
  34. CMARK_BLOCK_INDENTED_CODE,
  35. CMARK_BLOCK_HTML,
  36. CMARK_BLOCK_PARAGRAPH,
  37. CMARK_BLOCK_ATX_HEADER,
  38. CMARK_BLOCK_SETEXT_HEADER,
  39. CMARK_BLOCK_HRULE,
  40. CMARK_BLOCK_REFERENCE_DEF
  41. } cmark_block_tag;
  42. typedef struct cmark_node_inl cmark_node_inl;
  43. typedef struct cmark_node_block cmark_node_block;
  44. typedef struct cmark_doc_parser cmark_doc_parser;
  45. CMARK_EXPORT
  46. cmark_doc_parser *cmark_new_doc_parser();
  47. CMARK_EXPORT
  48. void cmark_free_doc_parser(cmark_doc_parser *parser);
  49. CMARK_EXPORT
  50. cmark_node_block *cmark_finish(cmark_doc_parser *parser);
  51. CMARK_EXPORT
  52. void cmark_process_line(cmark_doc_parser *parser, const unsigned char *buffer, size_t bytes);
  53. CMARK_EXPORT
  54. cmark_node_block *cmark_finish(cmark_doc_parser *parser);
  55. CMARK_EXPORT
  56. cmark_node_block *cmark_parse_document(const unsigned char *buffer, size_t len);
  57. CMARK_EXPORT
  58. cmark_node_block *cmark_parse_file(FILE *f);
  59. CMARK_EXPORT
  60. void cmark_debug_print(cmark_node_block *root);
  61. CMARK_EXPORT
  62. unsigned char *cmark_render_html(cmark_node_block *root);
  63. CMARK_EXPORT
  64. unsigned char *cmark_markdown_to_html(unsigned char *text, int len);
  65. CMARK_EXPORT
  66. void cmark_free_blocks(cmark_node_block *e);
  67. CMARK_EXPORT
  68. void cmark_free_inlines(cmark_node_inl* e);
  69. CMARK_EXPORT
  70. cmark_node_block *cmark_block_next(cmark_node_block *current);
  71. CMARK_EXPORT
  72. cmark_node_block *cmark_block_previous(cmark_node_block *current);
  73. CMARK_EXPORT
  74. cmark_node_block *cmark_block_parent(cmark_node_block *current);
  75. CMARK_EXPORT
  76. cmark_node_block *cmark_block_children(cmark_node_block *current);
  77. CMARK_EXPORT
  78. void cmark_block_delete(cmark_node_block *current);
  79. CMARK_EXPORT
  80. void cmark_block_insert_before(cmark_node_block *new, cmark_node_block *current);
  81. CMARK_EXPORT
  82. void cmark_block_insert_after(cmark_node_block *current, cmark_node_block *new);
  83. #ifndef CMARK_NO_SHORT_NAMES
  84. #define node_inl cmark_node_inl
  85. #define INL_STRING CMARK_INL_STRING
  86. #define INL_SOFTBREAK CMARK_INL_SOFTBREAK
  87. #define INL_LINEBREAK CMARK_INL_LINEBREAK
  88. #define INL_CODE CMARK_INL_CODE
  89. #define INL_RAW_HTML CMARK_INL_RAW_HTML
  90. #define INL_EMPH CMARK_INL_EMPH
  91. #define INL_STRONG CMARK_INL_STRONG
  92. #define INL_LINK CMARK_INL_LINK
  93. #define INL_IMAGE CMARK_INL_IMAGE
  94. #define ListData cmark_ListData
  95. #define FencedCodeData cmark_FencedCodeData
  96. #define node_block cmark_node_block
  97. #define BLOCK_DOCUMENT CMARK_BLOCK_DOCUMENT
  98. #define BLOCK_BQUOTE CMARK_BLOCK_BQUOTE
  99. #define BLOCK_LIST CMARK_BLOCK_LIST
  100. #define BLOCK_LIST_ITEM CMARK_BLOCK_LIST_ITEM
  101. #define BLOCK_FENCED_CODE CMARK_BLOCK_FENCED_CODE
  102. #define BLOCK_INDENTED_CODE CMARK_BLOCK_INDENTED_CODE
  103. #define BLOCK_HTML CMARK_BLOCK_HTML
  104. #define BLOCK_PARAGRAPH CMARK_BLOCK_PARAGRAPH
  105. #define BLOCK_ATX_HEADER CMARK_BLOCK_ATX_HEADER
  106. #define BLOCK_SETEXT_HEADER CMARK_BLOCK_SETEXT_HEADER
  107. #define BLOCK_HRULE CMARK_BLOCK_HRULE
  108. #define BLOCK_REFERENCE_DEF CMARK_BLOCK_REFERENCE_DEF
  109. #define BULLET_LIST CMARK_BULLET_LIST
  110. #define ORDERED_LIST CMARK_ORDERED_LIST
  111. #define PERIOD_DELIM CMARK_PERIOD_DELIM
  112. #define PAREN_DELIM CMARK_PAREN_DELIM
  113. #define free_simple cmark_free_simple
  114. #define free_blocks cmark_free_blocks
  115. #define doc_parser cmark_doc_parser
  116. #define new_doc_parser cmark_new_doc_parser
  117. #define free_doc_parser cmark_free_doc_parser
  118. #define process_line cmark_process_line
  119. #define finish cmark_finish
  120. #define block_next cmark_block_next
  121. #define block_previous cmark_block_previous
  122. #define block_parent cmark_block_parent
  123. #define block_children cmark_block_children
  124. #define block_delete cmark_block_delete
  125. #define block_insert_before cmark_block_insert_before
  126. #define block_insert_after cmark_block_insert_after
  127. #endif
  128. #ifdef __cplusplus
  129. }
  130. #endif
  131. #endif