MCPcopy Create free account
hub / github.com/PolyMC/PolyMC / parse_htmlblock

Function parse_htmlblock

libraries/hoedown/src/document.c:2110–2193  ·  view source on GitHub ↗

parse_htmlblock • parsing of inline HTML block */

Source from the content-addressed store, hash-verified

2108
2109/* parse_htmlblock • parsing of inline HTML block */
2110static size_t
2111parse_htmlblock(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t size, int do_render)
2112{
2113 hoedown_buffer work = { NULL, 0, 0, 0, NULL, NULL, NULL };
2114 size_t i, j = 0, tag_len, tag_end;
2115 const char *curtag = NULL;
2116
2117 work.data = data;
2118
2119 /* identification of the opening tag */
2120 if (size < 2 || data[0] != '<')
2121 return 0;
2122
2123 i = 1;
2124 while (i < size && data[i] != '>' && data[i] != ' ')
2125 i++;
2126
2127 if (i < size)
2128 curtag = hoedown_find_block_tag((char *)data + 1, (int)i - 1);
2129
2130 /* handling of special cases */
2131 if (!curtag) {
2132
2133 /* HTML comment, laxist form */
2134 if (size > 5 && data[1] == '!' && data[2] == '-' && data[3] == '-') {
2135 i = 5;
2136
2137 while (i < size && !(data[i - 2] == '-' && data[i - 1] == '-' && data[i] == '>'))
2138 i++;
2139
2140 i++;
2141
2142 if (i < size)
2143 j = is_empty(data + i, size - i);
2144
2145 if (j) {
2146 work.size = i + j;
2147 if (do_render && doc->md.blockhtml)
2148 doc->md.blockhtml(ob, &work, &doc->data);
2149 return work.size;
2150 }
2151 }
2152
2153 /* HR, which is the only self-closing block tag considered */
2154 if (size > 4 && (data[1] == 'h' || data[1] == 'H') && (data[2] == 'r' || data[2] == 'R')) {
2155 i = 3;
2156 while (i < size && data[i] != '>')
2157 i++;
2158
2159 if (i + 1 < size) {
2160 i++;
2161 j = is_empty(data + i, size - i);
2162 if (j) {
2163 work.size = i + j;
2164 if (do_render && doc->md.blockhtml)
2165 doc->md.blockhtml(ob, &work, &doc->data);
2166 return work.size;
2167 }

Callers 1

parse_blockFunction · 0.85

Calls 4

hoedown_find_block_tagFunction · 0.85
is_emptyFunction · 0.85
htmlblock_find_endFunction · 0.85

Tested by

no test coverage detected