1 /* 2 * Copyright (C) 2018 Alexander Borisov 3 * 4 * Author: Alexander Borisov <borisov@lexbor.com> 5 */ 6 7 #ifndef LEXBOR_HTML_SERIALIZE_H 8 #define LEXBOR_HTML_SERIALIZE_H 9 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 #include "lexbor/core/str.h" 15 #include "lexbor/dom/interfaces/element.h" 16 17 #include "lexbor/html/base.h" 18 19 20 typedef int lxb_html_serialize_opt_t; 21 22 enum lxb_html_serialize_opt { 23 LXB_HTML_SERIALIZE_OPT_UNDEF = 0x00, 24 LXB_HTML_SERIALIZE_OPT_SKIP_WS_NODES = 0x01, 25 LXB_HTML_SERIALIZE_OPT_SKIP_COMMENT = 0x02, 26 LXB_HTML_SERIALIZE_OPT_RAW = 0x04, 27 LXB_HTML_SERIALIZE_OPT_WITHOUT_CLOSING = 0x08, 28 LXB_HTML_SERIALIZE_OPT_TAG_WITH_NS = 0x10, 29 LXB_HTML_SERIALIZE_OPT_WITHOUT_TEXT_INDENT = 0x20, 30 LXB_HTML_SERIALIZE_OPT_FULL_DOCTYPE = 0x40 31 }; 32 33 34 typedef lxb_status_t 35 (*lxb_html_serialize_cb_f)(const lxb_char_t *data, size_t len, void *ctx); 36 37 38 LXB_API lxb_status_t 39 lxb_html_serialize_cb(lxb_dom_node_t *node, 40 lxb_html_serialize_cb_f cb, void *ctx); 41 42 LXB_API lxb_status_t 43 lxb_html_serialize_str(lxb_dom_node_t *node, lexbor_str_t *str); 44 45 LXB_API lxb_status_t 46 lxb_html_serialize_tree_cb(lxb_dom_node_t *node, 47 lxb_html_serialize_cb_f cb, void *ctx); 48 49 LXB_API lxb_status_t 50 lxb_html_serialize_tree_str(lxb_dom_node_t *node, lexbor_str_t *str); 51 52 LXB_API lxb_status_t 53 lxb_html_serialize_deep_cb(lxb_dom_node_t *node, 54 lxb_html_serialize_cb_f cb, void *ctx); 55 56 LXB_API lxb_status_t 57 lxb_html_serialize_deep_str(lxb_dom_node_t *node, lexbor_str_t *str); 58 59 LXB_API lxb_status_t 60 lxb_html_serialize_pretty_cb(lxb_dom_node_t *node, 61 lxb_html_serialize_opt_t opt, size_t indent, 62 lxb_html_serialize_cb_f cb, void *ctx); 63 64 LXB_API lxb_status_t 65 lxb_html_serialize_pretty_str(lxb_dom_node_t *node, 66 lxb_html_serialize_opt_t opt, size_t indent, 67 lexbor_str_t *str); 68 69 LXB_API lxb_status_t 70 lxb_html_serialize_pretty_tree_cb(lxb_dom_node_t *node, 71 lxb_html_serialize_opt_t opt, size_t indent, 72 lxb_html_serialize_cb_f cb, void *ctx); 73 74 LXB_API lxb_status_t 75 lxb_html_serialize_pretty_tree_str(lxb_dom_node_t *node, 76 lxb_html_serialize_opt_t opt, size_t indent, 77 lexbor_str_t *str); 78 79 LXB_API lxb_status_t 80 lxb_html_serialize_pretty_deep_cb(lxb_dom_node_t *node, 81 lxb_html_serialize_opt_t opt, size_t indent, 82 lxb_html_serialize_cb_f cb, void *ctx); 83 84 LXB_API lxb_status_t 85 lxb_html_serialize_pretty_deep_str(lxb_dom_node_t *node, 86 lxb_html_serialize_opt_t opt, size_t indent, 87 lexbor_str_t *str); 88 89 #ifdef __cplusplus 90 } /* extern "C" */ 91 #endif 92 93 #endif /* LEXBOR_HTML_SERIALIZE_H */ 94