aboutsummaryrefslogtreecommitdiff
path: root/src/cmark.h
blob: e28e7478db96c533cf2021616479b8e478d05d4f (plain)
  1. #ifndef CMARK_H
  2. #define CMARK_H
  3. #include <stdbool.h>
  4. #include <stdio.h>
  5. #include "buffer.h"
  6. #include "chunk.h"
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10. #define CMARK_VERSION "0.1"
  11. #define CMARK_CODE_INDENT 4
  12. #define CMARK_MAX_LINK_LABEL_LENGTH 1000
  13. typedef struct cmark_node_inl cmark_node_inl;
  14. typedef struct cmark_node_block cmark_node_block;
  15. typedef struct cmark_doc_parser cmark_doc_parser;
  16. CMARK_EXPORT
  17. cmark_doc_parser *cmark_new_doc_parser();
  18. CMARK_EXPORT
  19. void cmark_free_doc_parser(cmark_doc_parser *parser);
  20. CMARK_EXPORT
  21. cmark_node_block *cmark_finish(cmark_doc_parser *parser);
  22. CMARK_EXPORT
  23. void cmark_process_line(cmark_doc_parser *parser, const unsigned char *buffer, size_t bytes);
  24. CMARK_EXPORT
  25. cmark_node_block *cmark_finish(cmark_doc_parser *parser);
  26. CMARK_EXPORT
  27. cmark_node_block *cmark_parse_document(const unsigned char *buffer, size_t len);
  28. CMARK_EXPORT
  29. cmark_node_block *cmark_parse_file(FILE *f);
  30. CMARK_EXPORT
  31. void cmark_debug_print(cmark_node_block *root);
  32. CMARK_EXPORT
  33. void cmark_render_html(cmark_strbuf *html, cmark_node_block *root);
  34. CMARK_EXPORT
  35. unsigned char *cmark_markdown_to_html(unsigned char *text, int len);
  36. CMARK_EXPORT
  37. void cmark_free_blocks(cmark_node_block *e);
  38. CMARK_EXPORT
  39. void cmark_free_inlines(cmark_node_inl* e);
  40. CMARK_EXPORT
  41. cmark_node_inl *cmark_make_link(cmark_node_inl *label, unsigned char *url, unsigned char *title);
  42. CMARK_EXPORT
  43. cmark_node_inl* cmark_make_autolink(cmark_node_inl* label, cmark_chunk url, int is_email);
  44. CMARK_EXPORT
  45. cmark_node_inl* cmark_make_inlines(int t, cmark_node_inl* contents);
  46. CMARK_EXPORT
  47. cmark_node_inl* cmark_make_literal(int t, cmark_chunk s);
  48. CMARK_EXPORT
  49. cmark_node_inl* cmark_make_simple(int t);
  50. // Macros for creating various kinds of simple.
  51. #define cmark_make_str(s) cmark_make_literal(INL_STRING, s)
  52. #define cmark_make_code(s) cmark_make_literal(INL_CODE, s)
  53. #define cmark_make_raw_html(s) cmark_make_literal(INL_RAW_HTML, s)
  54. #define cmark_make_linebreak() cmark_make_simple(INL_LINEBREAK)
  55. #define cmark_make_softbreak() cmark_make_simple(INL_SOFTBREAK)
  56. #define cmark_make_emph(contents) cmark_make_inlines(INL_EMPH, contents)
  57. #define cmark_make_strong(contents) cmark_make_inlines(INL_STRONG, contents)
  58. #ifndef CMARK_NO_SHORT_NAMES
  59. #define VERSION CMARK_VERSION
  60. #define CODE_INDENT CMARK_CODE_INDENT
  61. #define MAX_LINK_LABEL_LENGTH CMARK_MAX_LINK_LABEL_LENGTH
  62. #define node_inl cmark_node_inl
  63. #define INL_STRING CMARK_INL_STRING
  64. #define INL_SOFTBREAK CMARK_INL_SOFTBREAK
  65. #define INL_LINEBREAK CMARK_INL_LINEBREAK
  66. #define INL_CODE CMARK_INL_CODE
  67. #define INL_RAW_HTML CMARK_INL_RAW_HTML
  68. #define INL_EMPH CMARK_INL_EMPH
  69. #define INL_STRONG CMARK_INL_STRONG
  70. #define INL_LINK CMARK_INL_LINK
  71. #define INL_IMAGE CMARK_INL_IMAGE
  72. #define ListData cmark_ListData
  73. #define FencedCodeData cmark_FencedCodeData
  74. #define node_block cmark_node_block
  75. #define BLOCK_DOCUMENT CMARK_BLOCK_DOCUMENT
  76. #define BLOCK_BQUOTE CMARK_BLOCK_BQUOTE
  77. #define BLOCK_LIST CMARK_BLOCK_LIST
  78. #define BLOCK_LIST_ITEM CMARK_BLOCK_LIST_ITEM
  79. #define BLOCK_FENCED_CODE CMARK_BLOCK_FENCED_CODE
  80. #define BLOCK_INDENTED_CODE CMARK_BLOCK_INDENTED_CODE
  81. #define BLOCK_HTML CMARK_BLOCK_HTML
  82. #define BLOCK_PARAGRAPH CMARK_BLOCK_PARAGRAPH
  83. #define BLOCK_ATX_HEADER CMARK_BLOCK_ATX_HEADER
  84. #define BLOCK_SETEXT_HEADER CMARK_BLOCK_SETEXT_HEADER
  85. #define BLOCK_HRULE CMARK_BLOCK_HRULE
  86. #define BLOCK_REFERENCE_DEF CMARK_BLOCK_REFERENCE_DEF
  87. #define free_simple cmark_free_simple
  88. #define free_blocks cmark_free_blocks
  89. #define make_link cmark_make_link
  90. #define make_autolink cmark_make_autolink
  91. #define make_str cmark_make_str
  92. #define make_code cmark_make_code
  93. #define make_raw_html cmark_make_raw_html
  94. #define make_linebreak cmark_make_linebreak
  95. #define make_softbreak cmark_make_softbreak
  96. #define make_emph cmark_make_emph
  97. #define make_strong cmark_make_strong
  98. #define make_simple cmark_make_simple
  99. #define make_literal cmark_make_literal
  100. #define make_inlines cmark_make_inlines
  101. #define doc_parser cmark_doc_parser
  102. #define new_doc_parser cmark_new_doc_parser
  103. #define free_doc_parser cmark_free_doc_parser
  104. #define process_line cmark_process_line
  105. #define finish cmark_finish
  106. #endif
  107. #ifdef __cplusplus
  108. }
  109. #endif
  110. #endif