Branch Coverage

hoedown/src/document.c
Criterion Covered Total %
branch 427 1766 24.1


line true false branch
145 51 0 if (pool->size < pool->asize &&
39 12 if (pool->size < pool->asize &&
167 6 0 while (i < src->size) {
169 115 6 while (i < src->size && src->data[i] != '\\')
115 0 while (i < src->size && src->data[i] != '\\')
172 6 0 if (i > org)
175 0 6 if (i + 1 >= src->size)
189 6 6 for (i = 0; i < length; ++i)
217 3 0 while (ref != NULL) {
218 0 3 if (ref->id == hash)
232 56 7 for (i = 0; i < REF_TABLE_SIZE; ++i) {
236 3 56 while (r) {
260 0 0 if (!item)
264 0 0 if (list->head == NULL) {
283 0 0 while (item != NULL) {
284 0 0 if (item->ref->id == hash)
305 0 1 while (item) {
0 1 while (item) {
307 0 0 if (free_refs)
337 0 0 while (i < size && _isspace(data[i])) i++;
0 0 while (i < size && _isspace(data[i])) i++;
0 0 while (i < size && _isspace(data[i])) i++;
0 0 while (i < size && _isspace(data[i])) i++;
352 0 0 while (i < size && data[i] != '\n') i++;
0 0 while (i < size && data[i] != '\n') i++;
355 0 0 if (i >= size) break;
357 0 0 if (!(i > 0 && data[i-1] == ' '))
0 0 if (!(i > 0 && data[i-1] == ' '))
375 0 0 for (i = 0; i < size; ++i) {
376 0 0 if (isalnum(data[i]))
389 0 0 return (nb == 1) ? i + 1 : 0;
406 2 0 if (size < 3) return 0;
408 2 0 if (data[0] != '<') return 0;
411 2 0 if (size > 5 && data[1] == '!' && data[2] == '-' && data[3] == '-') {
0 2 if (size > 5 && data[1] == '!' && data[2] == '-' && data[3] == '-') {
0 0 if (size > 5 && data[1] == '!' && data[2] == '-' && data[3] == '-') {
0 0 if (size > 5 && data[1] == '!' && data[2] == '-' && data[3] == '-') {
414 0 0 while (i < size && !(data[i - 2] == '-' && data[i - 1] == '-' && data[i] == '>'))
0 0 while (i < size && !(data[i - 2] == '-' && data[i - 1] == '-' && data[i] == '>'))
0 0 while (i < size && !(data[i - 2] == '-' && data[i - 1] == '-' && data[i] == '>'))
0 0 while (i < size && !(data[i - 2] == '-' && data[i - 1] == '-' && data[i] == '>'))
419 0 0 if (i <= size)
424 1 1 i = (data[1] == '/') ? 2 : 1;
426 2 0 if (!isalnum(data[i]))
433 4 0 while (i < size && (isalnum(data[i]) || data[i] == '.' || data[i] == '+' || data[i] == '-'))
2 2 while (i < size && (isalnum(data[i]) || data[i] == '.' || data[i] == '+' || data[i] == '-'))
0 2 while (i < size && (isalnum(data[i]) || data[i] == '.' || data[i] == '+' || data[i] == '-'))
0 2 while (i < size && (isalnum(data[i]) || data[i] == '.' || data[i] == '+' || data[i] == '-'))
0 2 while (i < size && (isalnum(data[i]) || data[i] == '.' || data[i] == '+' || data[i] == '-'))
436 2 0 if (i > 1 && data[i] == '@') {
0 2 if (i > 1 && data[i] == '@') {
437 0 0 if ((j = is_mail_autolink(data + i, size - i)) != 0) {
443 1 1 if (i > 2 && data[i] == ':') {
0 1 if (i > 2 && data[i] == ':') {
449 0 2 if (i >= size)
452 0 2 else if (*autolink) {
455 0 0 while (i < size) {
456 0 0 if (data[i] == '\\') i += 2;
457 0 0 else if (data[i] == '>' || data[i] == '\'' ||
0 0 else if (data[i] == '>' || data[i] == '\'' ||
458 0 0 data[i] == '"' || data[i] == ' ' || data[i] == '\n')
0 0 data[i] == '"' || data[i] == ' ' || data[i] == '\n')
463 0 0 if (i >= size) return 0;
464 0 0 if (i > j && data[i] == '>') return i + 1;
0 0 if (i > j && data[i] == '>') return i + 1;
470 2 0 while (i < size && data[i] != '>') i++;
0 2 while (i < size && data[i] != '>') i++;
471 2 0 if (i >= size) return 0;
483 33 0 if (doc->work_bufs[BUFFER_SPAN].size +
487 51 2 while (i < size) {
489 219 31 while (end < size && active_char[data[end]] == 0)
199 20 while (end < size && active_char[data[end]] == 0)
492 51 0 if (doc->md.normal_text) {
500 20 31 if (end >= size) break;
504 8 12 if (!end) /* no action from the callback */
519 2 0 while (i >= 1 && data[i - 1] == '\\')
0 2 while (i >= 1 && data[i - 1] == '\\')
0 0 while (i >= 1 && data[i - 1] == '\\')
0 0 while (i >= 1 && data[i - 1] == '\\')
7 0 while (i >= 1 && data[i - 1] == '\\')
0 7 while (i >= 1 && data[i - 1] == '\\')
532 7 0 while (i < size) {
533 52 0 while (i < size && data[i] != c && data[i] != '[' && data[i] != '`')
45 7 while (i < size && data[i] != c && data[i] != '[' && data[i] != '`')
45 0 while (i < size && data[i] != c && data[i] != '[' && data[i] != '`')
45 0 while (i < size && data[i] != c && data[i] != '[' && data[i] != '`')
536 7 0 if (i == size)
540 0 7 if (is_escaped(data, i)) {
544 0 7 if (data[i] == c)
548 0 0 if (data[i] == '`') {
553 0 0 while (i < size && data[i] == '`') {
0 0 while (i < size && data[i] == '`') {
557 0 0 if (i >= size) return 0;
561 0 0 while (i < size && bt < span_nb) {
562 0 0 if (!tmp_i && data[i] == c) tmp_i = i;
0 0 if (!tmp_i && data[i] == c) tmp_i = i;
563 0 0 if (data[i] == '`') bt++;
569 0 0 if (bt < span_nb && i >= size) return tmp_i;
572 0 0 else if (data[i] == '[') {
577 0 0 while (i < size && data[i] != ']') {
0 0 while (i < size && data[i] != ']') {
578 0 0 if (!tmp_i && data[i] == c) tmp_i = i;
0 0 if (!tmp_i && data[i] == c) tmp_i = i;
583 0 0 while (i < size && _isspace(data[i]))
0 0 while (i < size && _isspace(data[i]))
586 0 0 if (i >= size)
597 0 0 if (tmp_i)
604 0 0 while (i < size && data[i] != cc) {
0 0 while (i < size && data[i] != cc) {
605 0 0 if (!tmp_i && data[i] == c) tmp_i = i;
0 0 if (!tmp_i && data[i] == c) tmp_i = i;
609 0 0 if (i >= size)
629 1 0 if (size > 1 && data[0] == c && data[1] == c) i = 1;
0 1 if (size > 1 && data[0] == c && data[1] == c) i = 1;
0 0 if (size > 1 && data[0] == c && data[1] == c) i = 1;
631 1 0 while (i < size) {
633 1 0 if (!len) return 0;
635 1 0 if (i >= size) return 0;
637 1 0 if (data[i] == c && !_isspace(data[i - 1])) {
1 0 if (data[i] == c && !_isspace(data[i - 1])) {
639 0 1 if (doc->ext_flags & HOEDOWN_EXT_NO_INTRA_EMPHASIS) {
640 0 0 if (i + 1 < size && isalnum(data[i + 1]))
0 0 if (i + 1 < size && isalnum(data[i + 1]))
647 1 0 if (doc->ext_flags & HOEDOWN_EXT_UNDERLINE && c == '_')
1 0 if (doc->ext_flags & HOEDOWN_EXT_UNDERLINE && c == '_')
653 1 0 return r ? i + 1 : 0;
668 0 0 while (i < size) {
670 0 0 if (!len) return 0;
673 0 0 if (i + 1 < size && data[i] == c && data[i + 1] == c && i && !_isspace(data[i - 1])) {
0 0 if (i + 1 < size && data[i] == c && data[i + 1] == c && i && !_isspace(data[i - 1])) {
0 0 if (i + 1 < size && data[i] == c && data[i + 1] == c && i && !_isspace(data[i - 1])) {
0 0 if (i + 1 < size && data[i] == c && data[i + 1] == c && i && !_isspace(data[i - 1])) {
0 0 if (i + 1 < size && data[i] == c && data[i + 1] == c && i && !_isspace(data[i - 1])) {
677 0 0 if (c == '~')
679 0 0 else if (c == '=')
685 0 0 return r ? i + 2 : 0;
700 0 0 while (i < size) {
702 0 0 if (!len) return 0;
706 0 0 if (data[i] != c || _isspace(data[i - 1]))
0 0 if (data[i] != c || _isspace(data[i - 1]))
709 0 0 if (i + 2 < size && data[i + 1] == c && data[i + 2] == c && doc->md.triple_emphasis) {
0 0 if (i + 2 < size && data[i + 1] == c && data[i + 2] == c && doc->md.triple_emphasis) {
0 0 if (i + 2 < size && data[i + 1] == c && data[i + 2] == c && doc->md.triple_emphasis) {
0 0 if (i + 2 < size && data[i + 1] == c && data[i + 2] == c && doc->md.triple_emphasis) {
716 0 0 return r ? i + 3 : 0;
718 0 0 } else if (i + 1 < size && data[i + 1] == c) {
0 0 } else if (i + 1 < size && data[i + 1] == c) {
721 0 0 if (!len) return 0;
727 0 0 if (!len) return 0;
741 0 0 if (!doc->md.math)
746 0 0 while (i < size && data[i] != (uint8_t)end[0])
0 0 while (i < size && data[i] != (uint8_t)end[0])
749 0 0 if (i >= size)
752 0 0 if (!is_escaped(data, i) && !(i + delimsz > size)
0 0 if (!is_escaped(data, i) && !(i + delimsz > size)
753 0 0 && memcmp(data + i, end, delimsz) == 0)
766 0 0 if (delimsz == 2 && !(doc->ext_flags & HOEDOWN_EXT_MATH_EXPLICIT))
0 0 if (delimsz == 2 && !(doc->ext_flags & HOEDOWN_EXT_MATH_EXPLICIT))
767 0 0 displaymode = is_empty_all(data - offset, offset) && is_empty_all(data + i, size - i);
0 0 displaymode = is_empty_all(data - offset, offset) && is_empty_all(data + i, size - i);
770 0 0 if (doc->md.math(ob, &text, displaymode, &doc->data))
783 0 1 if (doc->ext_flags & HOEDOWN_EXT_NO_INTRA_EMPHASIS) {
784 0 0 if (offset > 0 && !_isspace(data[-1]) && data[-1] != '>' && data[-1] != '(')
0 0 if (offset > 0 && !_isspace(data[-1]) && data[-1] != '>' && data[-1] != '(')
0 0 if (offset > 0 && !_isspace(data[-1]) && data[-1] != '>' && data[-1] != '(')
0 0 if (offset > 0 && !_isspace(data[-1]) && data[-1] != '>' && data[-1] != '(')
788 1 0 if (size > 2 && data[1] != c) {
1 0 if (size > 2 && data[1] != c) {
791 1 0 if (c == '~' || c == '=' || _isspace(data[1]) || (ret = parse_emph1(ob, doc, data + 1, size - 1, c)) == 0)
1 0 if (c == '~' || c == '=' || _isspace(data[1]) || (ret = parse_emph1(ob, doc, data + 1, size - 1, c)) == 0)
1 0 if (c == '~' || c == '=' || _isspace(data[1]) || (ret = parse_emph1(ob, doc, data + 1, size - 1, c)) == 0)
797 0 0 if (size > 3 && data[1] == c && data[2] != c) {
0 0 if (size > 3 && data[1] == c && data[2] != c) {
0 0 if (size > 3 && data[1] == c && data[2] != c) {
798 0 0 if (_isspace(data[2]) || (ret = parse_emph2(ob, doc, data + 2, size - 2, c)) == 0)
0 0 if (_isspace(data[2]) || (ret = parse_emph2(ob, doc, data + 2, size - 2, c)) == 0)
804 0 0 if (size > 4 && data[1] == c && data[2] == c && data[3] != c) {
0 0 if (size > 4 && data[1] == c && data[2] == c && data[3] != c) {
0 0 if (size > 4 && data[1] == c && data[2] == c && data[3] != c) {
0 0 if (size > 4 && data[1] == c && data[2] == c && data[3] != c) {
805 0 0 if (c == '~' || c == '=' || _isspace(data[3]) || (ret = parse_emph3(ob, doc, data + 3, size - 3, c)) == 0)
0 0 if (c == '~' || c == '=' || _isspace(data[3]) || (ret = parse_emph3(ob, doc, data + 3, size - 3, c)) == 0)
0 0 if (c == '~' || c == '=' || _isspace(data[3]) || (ret = parse_emph3(ob, doc, data + 3, size - 3, c)) == 0)
819 2 5 if (offset < 2 || data[-1] != ' ' || data[-2] != ' ')
0 2 if (offset < 2 || data[-1] != ' ' || data[-2] != ' ')
0 0 if (offset < 2 || data[-1] != ' ' || data[-2] != ' ')
823 0 0 while (ob->size && ob->data[ob->size - 1] == ' ')
0 0 while (ob->size && ob->data[ob->size - 1] == ' ')
838 2 0 while (nb < size && data[nb] == '`')
1 1 while (nb < size && data[nb] == '`')
843 7 1 for (end = nb; end < size && i < nb; end++) {
844 1 6 if (data[end] == '`') i++;
848 1 0 if (i < nb && end >= size)
853 1 0 while (f_begin < end && data[f_begin] == ' ')
0 1 while (f_begin < end && data[f_begin] == ' ')
857 1 0 while (f_end > nb && data[f_end-1] == ' ')
0 1 while (f_end > nb && data[f_end-1] == ' ')
861 1 0 if (f_begin < f_end) {
865 0 1 if (!doc->md.codespan(ob, &work, &doc->data))
868 0 0 if (!doc->md.codespan(ob, 0, &doc->data))
882 0 0 while (nq < size && data[nq] == '"')
0 0 while (nq < size && data[nq] == '"')
890 0 0 if (end == i) return 0; /* no matching delimiter */
892 0 0 while (end < size && data[end] == '"' && end - i < nq) end++;
0 0 while (end < size && data[end] == '"' && end - i < nq) end++;
0 0 while (end < size && data[end] == '"' && end - i < nq) end++;
893 0 0 if (end - i >= nq) break;
898 0 0 while (f_begin < end && data[f_begin] == ' ')
0 0 while (f_begin < end && data[f_begin] == ' ')
902 0 0 while (f_end > nq && data[f_end-1] == ' ')
0 0 while (f_end > nq && data[f_end-1] == ' ')
906 0 0 if (f_begin < f_end) {
910 0 0 if (!doc->md.quote(ob, work, &doc->data))
914 0 0 if (!doc->md.quote(ob, 0, &doc->data))
930 0 0 if (size > 1) {
931 0 0 if (data[1] == '\\' && (doc->ext_flags & HOEDOWN_EXT_MATH) &&
0 0 if (data[1] == '\\' && (doc->ext_flags & HOEDOWN_EXT_MATH) &&
0 0 if (data[1] == '\\' && (doc->ext_flags & HOEDOWN_EXT_MATH) &&
932 0 0 size > 2 && (data[2] == '(' || data[2] == '[')) {
933 0 0 const char *end = (data[2] == '[') ? "\\\\]" : "\\\\)";
935 0 0 if (w) return w;
938 0 0 if (strchr(escape_chars, data[1]) == NULL)
0 0 if (strchr(escape_chars, data[1]) == NULL)
0 0 if (strchr(escape_chars, data[1]) == NULL)
941 0 0 if (doc->md.normal_text) {
947 0 0 } else if (size == 1) {
948 0 0 if (doc->md.normal_text) {
967 1 0 if (end < size && data[end] == '#')
0 1 if (end < size && data[end] == '#')
970 1 0 while (end < size && isalnum(data[end]))
0 1 while (end < size && isalnum(data[end]))
973 1 0 if (end < size && data[end] == ';')
0 1 if (end < size && data[end] == ';')
978 0 0 if (doc->md.entity) {
1000 2 0 if (end > 2) {
1001 2 0 if (doc->md.autolink && altype != HOEDOWN_AUTOLINK_NONE) {
0 2 if (doc->md.autolink && altype != HOEDOWN_AUTOLINK_NONE) {
1009 2 0 else if (doc->md.raw_html)
1013 2 0 if (!ret) return 0;
1023 0 0 if (!doc->md.link || doc->in_link_body)
0 0 if (!doc->md.link || doc->in_link_body)
1028 0 0 if ((link_len = hoedown_autolink__www(&rewind, link, data, offset, size, HOEDOWN_AUTOLINK_SHORT_DOMAINS)) > 0) {
1033 0 0 if (ob->size > rewind)
1038 0 0 if (doc->md.normal_text) {
1059 0 0 if (!doc->md.autolink || doc->in_link_body)
0 0 if (!doc->md.autolink || doc->in_link_body)
1064 0 0 if ((link_len = hoedown_autolink__email(&rewind, link, data, offset, size, 0)) > 0) {
1065 0 0 if (ob->size > rewind)
1083 2 0 if (!doc->md.autolink || doc->in_link_body)
2 0 if (!doc->md.autolink || doc->in_link_body)
1088 2 0 if ((link_len = hoedown_autolink__url(&rewind, link, data, offset, size, 0)) > 0) {
1089 1 1 if (ob->size > rewind)
1105 2 0 if (size < 2 || data[1] != '[') return 0;
2 0 if (size < 2 || data[1] != '[') return 0;
1108 2 0 if (!ret) return 0;
1116 6 0 int is_img = (offset && data[-1] == '!' && !is_escaped(data - offset, offset - 1));
2 4 int is_img = (offset && data[-1] == '!' && !is_escaped(data - offset, offset - 1));
0 2 int is_img = (offset && data[-1] == '!' && !is_escaped(data - offset, offset - 1));
1117 6 0 int is_footnote = (doc->ext_flags & HOEDOWN_EXT_FOOTNOTES && data[1] == '^');
6 0 int is_footnote = (doc->ext_flags & HOEDOWN_EXT_FOOTNOTES && data[1] == '^');
1127 0 6 if ((is_footnote && !doc->md.footnote_ref) || (is_img && !doc->md.image)
0 0 if ((is_footnote && !doc->md.footnote_ref) || (is_img && !doc->md.image)
2 4 if ((is_footnote && !doc->md.footnote_ref) || (is_img && !doc->md.image)
2 0 if ((is_footnote && !doc->md.footnote_ref) || (is_img && !doc->md.image)
1128 4 2 || (!is_img && !is_footnote && !doc->md.link))
4 0 || (!is_img && !is_footnote && !doc->md.link))
1135 6 0 if (i < size && data[i] == ']') i++;
6 0 if (i < size && data[i] == ']') i++;
1139 6 0 if (is_footnote) {
1143 0 0 if (txt_e < 3)
1152 0 0 if (fr && !fr->is_used) {
0 0 if (fr && !fr->is_used) {
1153 0 0 if(!add_footnote_ref(&doc->footnotes_used, fr))
1159 0 0 if (doc->md.footnote_ref)
1168 9 0 while (i < size && _isspace(data[i]))
3 6 while (i < size && _isspace(data[i]))
1172 6 0 if (i < size && data[i] == '(') {
3 3 if (i < size && data[i] == '(') {
1178 0 3 while (i < size && _isspace(data[i]))
0 3 while (i < size && _isspace(data[i]))
1187 56 0 while (i < size) {
1188 0 56 if (data[i] == '\\') i += 2;
1189 0 56 else if (data[i] == '(' && i != 0) {
0 0 else if (data[i] == '(' && i != 0) {
1192 1 55 else if (data[i] == ')') {
1193 0 1 if (nb_p == 0) break;
1195 55 0 } else if (i >= 1 && _isspace(data[i-1]) && (data[i] == '\'' || data[i] == '"')) break;
2 53 } else if (i >= 1 && _isspace(data[i-1]) && (data[i] == '\'' || data[i] == '"')) break;
0 2 } else if (i >= 1 && _isspace(data[i-1]) && (data[i] == '\'' || data[i] == '"')) break;
1199 3 0 if (i >= size) goto cleanup;
1203 2 1 if (data[i] == '\'' || data[i] == '"') {
1209 23 0 while (i < size) {
1210 0 23 if (data[i] == '\\') i += 2;
1211 2 21 else if (data[i] == qtype) {in_title = 0; i++;}
1212 2 19 else if ((data[i] == ')') && !in_title) break;
0 2 else if ((data[i] == ')') && !in_title) break;
1216 2 0 if (i >= size) goto cleanup;
1220 2 0 while (title_e > title_b && _isspace(data[title_e]))
0 2 while (title_e > title_b && _isspace(data[title_e]))
1224 0 2 if (data[title_e] != '\'' && data[title_e] != '"') {
1231 5 0 while (link_e > link_b && _isspace(data[link_e - 1]))
2 3 while (link_e > link_b && _isspace(data[link_e - 1]))
1235 0 3 if (data[link_b] == '<' && data[link_e - 1] == '>') {
0 0 if (data[link_b] == '<' && data[link_e - 1] == '>') {
1241 3 0 if (link_e > link_b) {
1246 2 1 if (title_e > title_b) {
1255 3 0 else if (i < size && data[i] == '[') {
3 0 else if (i < size && data[i] == '[') {
1262 6 0 while (i < size && data[i] != ']') i++;
3 3 while (i < size && data[i] != ']') i++;
1263 3 0 if (i >= size) goto cleanup;
1267 0 3 if (link_b == link_e)
1273 3 0 if (!lr)
1292 0 0 if (!lr)
1304 6 0 if (txt_e > 1) {
1306 2 4 if (is_img) {
1317 6 0 if (link) {
1323 2 4 if (is_img) {
1332 6 0 return ret ? i : 0;
1341 0 0 if (!doc->md.superscript)
1344 0 0 if (size < 2)
1347 0 0 if (data[1] == '(') {
1351 0 0 if (sup_len == size)
1356 0 0 while (sup_len < size && !_isspace(data[sup_len]))
0 0 while (sup_len < size && !_isspace(data[sup_len]))
1360 0 0 if (sup_len - sup_start == 0)
1361 0 0 return (sup_start == 2) ? 3 : 0;
1368 0 0 return (sup_start == 2) ? sup_len + 1 : sup_len;
1375 0 0 if (size > 1 && data[1] == '$')
0 0 if (size > 1 && data[1] == '$')
1379 0 0 if (doc->ext_flags & HOEDOWN_EXT_MATH_EXPLICIT)
1395 0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
31 0 for (i = 0; i < size && data[i] != '\n'; i++)
4 27 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
14 0 for (i = 0; i < size && data[i] != '\n'; i++)
11 3 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
0 0 for (i = 0; i < size && data[i] != '\n'; i++)
1396 0 0 if (data[i] != ' ')
0 0 if (data[i] != ' ')
0 0 if (data[i] != ' ')
0 4 if (data[i] != ' ')
0 0 if (data[i] != ' ')
0 0 if (data[i] != ' ')
0 0 if (data[i] != ' ')
0 0 if (data[i] != ' ')
0 0 if (data[i] != ' ')
0 0 if (data[i] != ' ')
0 11 if (data[i] != ' ')
0 0 if (data[i] != ' ')
0 0 if (data[i] != ' ')
1410 15 0 if (size < 3) return 0;
1411 0 15 if (data[0] == ' ') { i++;
1412 0 0 if (data[1] == ' ') { i++;
1413 0 0 if (data[2] == ' ') { i++; } } }
1416 15 0 if (i + 2 >= size
1417 15 0 || (data[i] != '*' && data[i] != '-' && data[i] != '_'))
1 14 || (data[i] != '*' && data[i] != '-' && data[i] != '_'))
1422 2 0 while (i < size && data[i] != '\n') {
2 0 while (i < size && data[i] != '\n') {
1423 1 1 if (data[i] == c) n++;
1424 0 1 else if (data[i] != ' ')
1443 0 0 if (size < 3)
1446 0 0 if (data[0] == ' ') { i++;
1447 0 0 if (data[1] == ' ') { i++;
1448 0 0 if (data[2] == ' ') { i++; } } }
1452 0 0 if (i + 2 >= size || !(c=='~' || c=='`'))
0 0 if (i + 2 >= size || !(c=='~' || c=='`'))
1456 0 0 while (++i < size && data[i] == c)
0 0 while (++i < size && data[i] == c)
1459 0 0 if (n < 3)
1462 0 0 if (width) *width = n;
1463 0 0 if (chr) *chr = c;
1474 0 0 if (i == 0)
1477 0 0 while (i < size && _isspace(data[i]))
0 0 while (i < size && _isspace(data[i]))
1482 0 0 while (i < size && !_isspace(data[i]))
0 0 while (i < size && !_isspace(data[i]))
1490 0 0 while (i < size && !(data[i] == *chr && data[i-1] == *chr && data[i-2] == *chr)) i++;
0 0 while (i < size && !(data[i] == *chr && data[i-1] == *chr && data[i-2] == *chr)) i++;
0 0 while (i < size && !(data[i] == *chr && data[i-1] == *chr && data[i-2] == *chr)) i++;
0 0 while (i < size && !(data[i] == *chr && data[i-1] == *chr && data[i-2] == *chr)) i++;
1491 0 0 if (i < size) return 0;
1500 24 42 if (data[0] != '#')
1503 0 24 if (doc->ext_flags & HOEDOWN_EXT_SPACE_HEADERS) {
1506 0 0 while (level < size && level < 6 && data[level] == '#')
0 0 while (level < size && level < 6 && data[level] == '#')
1509 0 0 if (level < size && data[level] != ' ')
0 0 if (level < size && data[level] != ' ')
1523 0 11 if (data[i] == '=') {
1524 0 0 for (i = 1; i < size && data[i] == '='; i++);
0 0 for (i = 1; i < size && data[i] == '='; i++);
1525 0 0 while (i < size && data[i] == ' ') i++;
0 0 while (i < size && data[i] == ' ') i++;
1526 0 0 return (i >= size || data[i] == '\n') ? 1 : 0; }
0 0 return (i >= size || data[i] == '\n') ? 1 : 0; }
1529 0 11 if (data[i] == '-') {
1530 0 0 for (i = 1; i < size && data[i] == '-'; i++);
0 0 for (i = 1; i < size && data[i] == '-'; i++);
1531 0 0 while (i < size && data[i] == ' ') i++;
0 0 while (i < size && data[i] == ' ') i++;
1532 0 0 return (i >= size || data[i] == '\n') ? 2 : 0; }
0 0 return (i >= size || data[i] == '\n') ? 2 : 0; }
1542 0 0 while (i < size && data[i] != '\n')
0 0 while (i < size && data[i] != '\n')
1545 0 0 if (++i >= size)
1556 15 0 if (i < size && data[i] == ' ') i++;
0 15 if (i < size && data[i] == ' ') i++;
1557 15 0 if (i < size && data[i] == ' ') i++;
0 15 if (i < size && data[i] == ' ') i++;
1558 15 0 if (i < size && data[i] == ' ') i++;
0 15 if (i < size && data[i] == ' ') i++;
1560 15 0 if (i < size && data[i] == '>') {
0 15 if (i < size && data[i] == '>') {
1561 0 0 if (i + 1 < size && data[i + 1] == ' ')
0 0 if (i + 1 < size && data[i + 1] == ' ')
1574 4 0 if (size > 3 && data[0] == ' ' && data[1] == ' '
0 4 if (size > 3 && data[0] == ' ' && data[1] == ' '
0 0 if (size > 3 && data[0] == ' ' && data[1] == ' '
0 0 if (size > 3 && data[0] == ' ' && data[1] == ' '
0 0 if (size > 3 && data[0] == ' ' && data[1] == ' '
0 0 if (size > 3 && data[0] == ' ' && data[1] == ' '
1575 0 0 && data[2] == ' ' && data[3] == ' ') return 4;
0 0 && data[2] == ' ' && data[3] == ' ') return 4;
0 0 && data[2] == ' ' && data[3] == ' ') return 4;
0 0 && data[2] == ' ' && data[3] == ' ') return 4;
1586 4 0 if (i < size && data[i] == ' ') i++;
0 4 if (i < size && data[i] == ' ') i++;
1587 4 0 if (i < size && data[i] == ' ') i++;
0 4 if (i < size && data[i] == ' ') i++;
1588 4 0 if (i < size && data[i] == ' ') i++;
0 4 if (i < size && data[i] == ' ') i++;
1590 4 0 if (i >= size || data[i] < '0' || data[i] > '9')
4 0 if (i >= size || data[i] < '0' || data[i] > '9')
0 4 if (i >= size || data[i] < '0' || data[i] > '9')
1593 0 0 while (i < size && data[i] >= '0' && data[i] <= '9')
0 0 while (i < size && data[i] >= '0' && data[i] <= '9')
0 0 while (i < size && data[i] >= '0' && data[i] <= '9')
1596 0 0 if (i + 1 >= size || data[i] != '.' || data[i + 1] != ' ')
0 0 if (i + 1 >= size || data[i] != '.' || data[i + 1] != ' ')
0 0 if (i + 1 >= size || data[i] != '.' || data[i + 1] != ' ')
1599 0 0 if (is_next_headerline(data + i, size - i))
1611 4 0 if (i < size && data[i] == ' ') i++;
0 4 if (i < size && data[i] == ' ') i++;
1612 4 0 if (i < size && data[i] == ' ') i++;
0 4 if (i < size && data[i] == ' ') i++;
1613 4 0 if (i < size && data[i] == ' ') i++;
0 4 if (i < size && data[i] == ' ') i++;
1615 4 0 if (i + 1 >= size ||
0 4 if (i + 1 >= size ||
1616 0 0 (data[i] != '*' && data[i] != '+' && data[i] != '-') ||
1620 0 0 if (is_next_headerline(data + i, size - i))
1642 0 0 while (beg < size) {
1643 0 0 for (end = beg + 1; end < size && data[end - 1] != '\n'; end++);
0 0 for (end = beg + 1; end < size && data[end - 1] != '\n'; end++);
1647 0 0 if (pre)
1651 0 0 else if (is_empty(data + beg, end - beg) &&
0 0 else if (is_empty(data + beg, end - beg) &&
1652 0 0 (end >= size || (prefix_quote(data + end, size - end) == 0 &&
0 0 (end >= size || (prefix_quote(data + end, size - end) == 0 &&
1656 0 0 if (beg < end) { /* copy into the in-place working buffer */
1658 0 0 if (!work_data)
1660 0 0 else if (data + beg != work_data + work_size)
1668 0 0 if (doc->md.blockquote)
1687 14 1 while (i < size) {
1688 296 1 for (end = i + 1; end < size && data[end - 1] != '\n'; end++) /* empty */;
283 13 for (end = i + 1; end < size && data[end - 1] != '\n'; end++) /* empty */;
1690 11 3 if (is_empty(data + i, size - i))
1693 11 0 if ((level = is_headerline(data + i, size - i)) != 0)
1697 11 0 is_hrule(data + i, size - i) ||
1707 8 0 while (work.size && data[work.size - 1] == '\n')
4 4 while (work.size && data[work.size - 1] == '\n')
1710 4 0 if (!level) {
1713 4 0 if (doc->md.paragraph)
1719 0 0 if (work.size) {
1724 0 0 while (work.size && data[work.size] != '\n')
0 0 while (work.size && data[work.size] != '\n')
1728 0 0 while (work.size && data[work.size - 1] == '\n')
0 0 while (work.size && data[work.size - 1] == '\n')
1731 0 0 if (work.size > 0) {
1735 0 0 if (doc->md.paragraph)
1748 0 0 if (doc->md.header)
1769 0 0 while (i < size && data[i] != '\n')
0 0 while (i < size && data[i] != '\n')
1773 0 0 if (!w)
1779 0 0 while ((line_start = i) < size) {
1780 0 0 while (i < size && data[i] != '\n')
0 0 while (i < size && data[i] != '\n')
1784 0 0 if (w == w2 && width == width2 && chr == chr2 &&
0 0 if (w == w2 && width == width2 && chr == chr2 &&
0 0 if (w == w2 && width == width2 && chr == chr2 &&
0 0 if (w == w2 && width == width2 && chr == chr2 &&
1794 0 0 if (doc->md.blockcode)
1795 0 0 doc->md.blockcode(ob, text.size ? &text : NULL, lang.size ? &lang : NULL, &doc->data);
0 0 doc->md.blockcode(ob, text.size ? &text : NULL, lang.size ? &lang : NULL, &doc->data);
1809 0 0 while (beg < size) {
1810 0 0 for (end = beg + 1; end < size && data[end - 1] != '\n'; end++) {};
0 0 for (end = beg + 1; end < size && data[end - 1] != '\n'; end++) {};
1813 0 0 if (pre)
1815 0 0 else if (!is_empty(data + beg, end - beg))
1819 0 0 if (beg < end) {
1822 0 0 if (is_empty(data + beg, end - beg))
1829 0 0 while (work->size && work->data[work->size - 1] == '\n')
0 0 while (work->size && work->data[work->size - 1] == '\n')
1834 0 0 if (doc->md.blockcode)
1851 0 0 while (orgpre < 3 && orgpre < size && data[orgpre] == ' ')
0 0 while (orgpre < 3 && orgpre < size && data[orgpre] == ' ')
1855 0 0 if (!beg)
1858 0 0 if (!beg)
1863 0 0 while (end < size && data[end - 1] != '\n')
0 0 while (end < size && data[end - 1] != '\n')
1875 0 0 while (beg < size) {
1880 0 0 while (end < size && data[end - 1] != '\n')
0 0 while (end < size && data[end - 1] != '\n')
1884 0 0 if (is_empty(data + beg, end - beg)) {
1892 0 0 while (i < 4 && beg + i < end && data[beg + i] == ' ')
0 0 while (i < 4 && beg + i < end && data[beg + i] == ' ')
0 0 while (i < 4 && beg + i < end && data[beg + i] == ' ')
1897 0 0 if (doc->ext_flags & HOEDOWN_EXT_FENCED_CODE) {
1898 0 0 if (is_codefence(data + beg + i, end - beg - i, NULL, NULL))
1904 0 0 if (!in_fence) {
1910 0 0 if ((has_next_uli && !is_hrule(data + beg + i, end - beg - i)) || has_next_oli) {
0 0 if ((has_next_uli && !is_hrule(data + beg + i, end - beg - i)) || has_next_oli) {
0 0 if ((has_next_uli && !is_hrule(data + beg + i, end - beg - i)) || has_next_oli) {
1911 0 0 if (in_empty)
1915 0 0 if (pre <= orgpre) {
1917 0 0 if (in_empty && (
0 0 if (in_empty && (
1918 0 0 ((*flags & HOEDOWN_LIST_ORDERED) && has_next_uli) ||
0 0 ((*flags & HOEDOWN_LIST_ORDERED) && has_next_uli) ||
1919 0 0 (!(*flags & HOEDOWN_LIST_ORDERED) && has_next_oli)))
1925 0 0 if (!sublist)
1931 0 0 else if (in_empty && pre == 0) {
1936 0 0 if (in_empty) {
1948 0 0 if (has_inside_empty)
1951 0 0 if (*flags & HOEDOWN_LI_BLOCK) {
1953 0 0 if (sublist && sublist < work->size) {
0 0 if (sublist && sublist < work->size) {
1961 0 0 if (sublist && sublist < work->size) {
0 0 if (sublist && sublist < work->size) {
1970 0 0 if (doc->md.listitem)
1988 0 0 while (i < size) {
1992 0 0 if (!j || (flags & HOEDOWN_LI_END))
0 0 if (!j || (flags & HOEDOWN_LI_END))
1996 0 0 if (doc->md.list)
2009 69 0 while (level < size && level < 6 && data[level] == '#')
45 24 while (level < size && level < 6 && data[level] == '#')
2012 48 0 for (i = level; i < size && data[i] == ' '; i++);
24 24 for (i = level; i < size && data[i] == ' '; i++);
2014 103 0 for (end = i; end < size && data[end] != '\n'; end++);
79 24 for (end = i; end < size && data[end] != '\n'; end++);
2017 24 0 while (end && data[end - 1] == '#')
0 24 while (end && data[end - 1] == '#')
2020 24 0 while (end && data[end - 1] == ' ')
0 24 while (end && data[end - 1] == ' ')
2023 24 0 if (end > i) {
2028 24 0 if (doc->md.header)
2046 0 0 if (doc->md.footnote_def)
2059 0 1 if (footnotes->count == 0)
2065 0 0 while (item) {
2071 0 0 if (doc->md.footnotes)
2091 0 0 if (i > size ||
0 0 if (i > size ||
2092 0 0 data[1] != '/' ||
2093 0 0 strncasecmp((char *)data + 2, tag, tag_len) != 0 ||
2098 0 0 if ((w = is_empty(data + i, size - i)) == 0 && i < size)
0 0 if ((w = is_empty(data + i, size - i)) == 0 && i < size)
2117 0 0 while (i < size && data[i] != '<') i++;
0 0 while (i < size && data[i] != '<') i++;
2118 0 0 if (i >= size) return 0;
2121 0 0 if (w) return i + w;
2141 0 0 while (i < size && data[i] != '\n') i++;
0 0 while (i < size && data[i] != '\n') i++;
2142 0 0 if (i < size) i++;
2143 0 0 if (i == mark) return 0;
2145 0 0 if (data[mark] == ' ' && mark > 0) continue;
0 0 if (data[mark] == ' ' && mark > 0) continue;
2147 0 0 if (mark == i && (is_empty(data + i, size - i) || i >= size)) break;
0 0 if (mark == i && (is_empty(data + i, size - i) || i >= size)) break;
0 0 if (mark == i && (is_empty(data + i, size - i) || i >= size)) break;
2164 0 0 if (size < 2 || data[0] != '<')
0 0 if (size < 2 || data[0] != '<')
2168 0 0 while (i < size && data[i] != '>' && data[i] != ' ')
0 0 while (i < size && data[i] != '>' && data[i] != ' ')
0 0 while (i < size && data[i] != '>' && data[i] != ' ')
2171 0 0 if (i < size)
2175 0 0 if (!curtag) {
2178 0 0 if (size > 5 && data[1] == '!' && data[2] == '-' && data[3] == '-') {
0 0 if (size > 5 && data[1] == '!' && data[2] == '-' && data[3] == '-') {
0 0 if (size > 5 && data[1] == '!' && data[2] == '-' && data[3] == '-') {
0 0 if (size > 5 && data[1] == '!' && data[2] == '-' && data[3] == '-') {
2181 0 0 while (i < size && !(data[i - 2] == '-' && data[i - 1] == '-' && data[i] == '>'))
0 0 while (i < size && !(data[i - 2] == '-' && data[i - 1] == '-' && data[i] == '>'))
0 0 while (i < size && !(data[i - 2] == '-' && data[i - 1] == '-' && data[i] == '>'))
0 0 while (i < size && !(data[i - 2] == '-' && data[i - 1] == '-' && data[i] == '>'))
2186 0 0 if (i < size)
2189 0 0 if (j) {
2191 0 0 if (do_render && doc->md.blockhtml)
0 0 if (do_render && doc->md.blockhtml)
2198 0 0 if (size > 4 && (data[1] == 'h' || data[1] == 'H') && (data[2] == 'r' || data[2] == 'R')) {
0 0 if (size > 4 && (data[1] == 'h' || data[1] == 'H') && (data[2] == 'r' || data[2] == 'R')) {
0 0 if (size > 4 && (data[1] == 'h' || data[1] == 'H') && (data[2] == 'r' || data[2] == 'R')) {
2200 0 0 while (i < size && data[i] != '>')
0 0 while (i < size && data[i] != '>')
2203 0 0 if (i + 1 < size) {
2206 0 0 if (j) {
2208 0 0 if (do_render && doc->md.blockhtml)
0 0 if (do_render && doc->md.blockhtml)
2225 0 0 if (!tag_end && strcmp(curtag, "ins") != 0 && strcmp(curtag, "del") != 0)
0 0 if (!tag_end && strcmp(curtag, "ins") != 0 && strcmp(curtag, "del") != 0)
0 0 if (!tag_end && strcmp(curtag, "ins") != 0 && strcmp(curtag, "del") != 0)
0 0 if (!tag_end && strcmp(curtag, "ins") != 0 && strcmp(curtag, "del") != 0)
0 0 if (!tag_end && strcmp(curtag, "ins") != 0 && strcmp(curtag, "del") != 0)
0 0 if (!tag_end && strcmp(curtag, "ins") != 0 && strcmp(curtag, "del") != 0)
0 0 if (!tag_end && strcmp(curtag, "ins") != 0 && strcmp(curtag, "del") != 0)
0 0 if (!tag_end && strcmp(curtag, "ins") != 0 && strcmp(curtag, "del") != 0)
0 0 if (!tag_end && strcmp(curtag, "ins") != 0 && strcmp(curtag, "del") != 0)
2228 0 0 if (!tag_end)
2233 0 0 if (do_render && doc->md.blockhtml)
0 0 if (do_render && doc->md.blockhtml)
2252 0 0 if (!doc->md.table_cell || !doc->md.table_row)
0 0 if (!doc->md.table_cell || !doc->md.table_row)
2257 0 0 if (i < size && data[i] == '|')
0 0 if (i < size && data[i] == '|')
2260 0 0 for (col = 0; col < columns && i < size; ++col) {
2266 0 0 while (i < size && _isspace(data[i]))
0 0 while (i < size && _isspace(data[i]))
2278 0 0 if (len == 0 && i < size && data[i] != '|')
0 0 if (len == 0 && i < size && data[i] != '|')
2284 0 0 while (cell_end > cell_start && _isspace(data[cell_end]))
0 0 while (cell_end > cell_start && _isspace(data[cell_end]))
2294 0 0 for (; col < columns; ++col) {
2317 0 0 while (i < size && data[i] != '\n')
0 0 while (i < size && data[i] != '\n')
2318 0 0 if (data[i++] == '|')
2321 0 0 if (i == size || pipes == 0)
2326 0 0 while (header_end > 0 && _isspace(data[header_end - 1]))
0 0 while (header_end > 0 && _isspace(data[header_end - 1]))
2329 0 0 if (data[0] == '|')
2332 0 0 if (header_end && data[header_end - 1] == '|')
0 0 if (header_end && data[header_end - 1] == '|')
2335 0 0 if (pipes < 0)
2343 0 0 if (i < size && data[i] == '|')
0 0 if (i < size && data[i] == '|')
2347 0 0 while (under_end < size && data[under_end] != '\n')
0 0 while (under_end < size && data[under_end] != '\n')
2350 0 0 for (col = 0; col < *columns && i < under_end; ++col) {
0 0 for (col = 0; col < *columns && i < under_end; ++col) {
2353 0 0 while (i < under_end && data[i] == ' ')
0 0 while (i < under_end && data[i] == ' ')
2356 0 0 if (data[i] == ':') {
2361 0 0 while (i < under_end && data[i] == '-') {
0 0 while (i < under_end && data[i] == '-') {
2365 0 0 if (i < under_end && data[i] == ':') {
0 0 if (i < under_end && data[i] == ':') {
2370 0 0 while (i < under_end && data[i] == ' ')
0 0 while (i < under_end && data[i] == ' ')
2373 0 0 if (i < under_end && data[i] != '|' && data[i] != '+')
0 0 if (i < under_end && data[i] != '|' && data[i] != '+')
0 0 if (i < under_end && data[i] != '|' && data[i] != '+')
2376 0 0 if (dashes < 3)
2382 0 0 if (col < *columns)
2417 0 0 if (i > 0) {
2419 0 0 while (i < size) {
2425 0 0 while (i < size && data[i] != '\n')
0 0 while (i < size && data[i] != '\n')
2426 0 0 if (data[i++] == '|')
2429 0 0 if (pipes == 0 || i == size) {
2446 0 0 if (doc->md.table_header)
2449 0 0 if (doc->md.table_body)
2452 0 0 if (doc->md.table)
2471 7 0 if (doc->work_bufs[BUFFER_SPAN].size +
2475 55 7 while (beg < size) {
2479 24 31 if (is_atxheader(doc, txt_data, end))
2482 0 31 else if (data[beg] == '<' && doc->md.blockhtml &&
0 0 else if (data[beg] == '<' && doc->md.blockhtml &&
0 0 else if (data[beg] == '<' && doc->md.blockhtml &&
2486 27 4 else if ((i = is_empty(txt_data, end)) != 0)
2489 0 4 else if (is_hrule(txt_data, end)) {
2490 0 0 if (doc->md.hrule)
2493 0 0 while (beg < size && data[beg] != '\n')
0 0 while (beg < size && data[beg] != '\n')
2499 0 4 else if ((doc->ext_flags & HOEDOWN_EXT_FENCED_CODE) != 0 &&
0 0 else if ((doc->ext_flags & HOEDOWN_EXT_FENCED_CODE) != 0 &&
2503 0 4 else if ((doc->ext_flags & HOEDOWN_EXT_TABLES) != 0 &&
0 0 else if ((doc->ext_flags & HOEDOWN_EXT_TABLES) != 0 &&
2507 0 4 else if (prefix_quote(txt_data, end))
2510 4 0 else if (!(doc->ext_flags & HOEDOWN_EXT_DISABLE_INDENTED_CODE) && prefix_code(txt_data, end))
0 4 else if (!(doc->ext_flags & HOEDOWN_EXT_DISABLE_INDENTED_CODE) && prefix_code(txt_data, end))
2513 0 4 else if (prefix_uli(txt_data, end))
2516 0 4 else if (prefix_oli(txt_data, end))
2543 16 1 if (beg + 3 >= end) return 0;
2544 3 13 if (data[beg] == ' ') { i = 1;
2545 0 3 if (data[beg + 1] == ' ') { i = 2;
2546 0 0 if (data[beg + 2] == ' ') { i = 3;
2547 0 0 if (data[beg + 3] == ' ') return 0; } } }
2551 4 12 if (data[i] != '[') return 0;
2553 4 0 if (i >= end || data[i] != '^') return 0;
0 4 if (i >= end || data[i] != '^') return 0;
2556 0 0 while (i < end && data[i] != '\n' && data[i] != '\r' && data[i] != ']')
0 0 while (i < end && data[i] != '\n' && data[i] != '\r' && data[i] != ']')
0 0 while (i < end && data[i] != '\n' && data[i] != '\r' && data[i] != ']')
0 0 while (i < end && data[i] != '\n' && data[i] != '\r' && data[i] != ']')
2558 0 0 if (i >= end || data[i] != ']') return 0;
0 0 if (i >= end || data[i] != ']') return 0;
2563 0 0 if (i >= end || data[i] != ':') return 0;
0 0 if (i >= end || data[i] != ':') return 0;
2572 0 0 while (i < end) {
2573 0 0 while (i < end && data[i] != '\n' && data[i] != '\r') i++;
0 0 while (i < end && data[i] != '\n' && data[i] != '\r') i++;
0 0 while (i < end && data[i] != '\n' && data[i] != '\r') i++;
2576 0 0 if (is_empty(data + start, i - start)) {
2578 0 0 if (i < end && (data[i] == '\n' || data[i] == '\r')) {
0 0 if (i < end && (data[i] == '\n' || data[i] == '\r')) {
2580 0 0 if (i < end && data[i] == '\n' && data[i - 1] == '\r') i++;
0 0 if (i < end && data[i] == '\n' && data[i - 1] == '\r') i++;
0 0 if (i < end && data[i] == '\n' && data[i - 1] == '\r') i++;
2588 0 0 while (ind < 4 && start + ind < end && data[start + ind] == ' ')
0 0 while (ind < 4 && start + ind < end && data[start + ind] == ' ')
0 0 while (ind < 4 && start + ind < end && data[start + ind] == ' ')
2594 0 0 if (ind == 0) {
2595 0 0 if (start == id_end + 2 && data[start] == '\t') {}
0 0 if (start == id_end + 2 && data[start] == '\t') {}
2598 0 0 else if (in_empty) {
2607 0 0 if (i < end) {
2609 0 0 if (i < end && (data[i] == '\n' || data[i] == '\r')) {
0 0 if (i < end && (data[i] == '\n' || data[i] == '\r')) {
2611 0 0 if (i < end && data[i] == '\n' && data[i - 1] == '\r') i++;
0 0 if (i < end && data[i] == '\n' && data[i - 1] == '\r') i++;
0 0 if (i < end && data[i] == '\n' && data[i - 1] == '\r') i++;
2617 0 0 if (last)
2620 0 0 if (list) {
2623 0 0 if (!ref)
2625 0 0 if (!add_footnote_ref(list, ref)) {
2647 40 1 if (beg + 3 >= end) return 0;
2648 3 37 if (data[beg] == ' ') { i = 1;
2649 0 3 if (data[beg + 1] == ' ') { i = 2;
2650 0 0 if (data[beg + 2] == ' ') { i = 3;
2651 0 0 if (data[beg + 3] == ' ') return 0; } } }
2655 4 36 if (data[i] != '[') return 0;
2658 12 0 while (i < end && data[i] != '\n' && data[i] != '\r' && data[i] != ']')
12 0 while (i < end && data[i] != '\n' && data[i] != '\r' && data[i] != ']')
12 0 while (i < end && data[i] != '\n' && data[i] != '\r' && data[i] != ']')
8 4 while (i < end && data[i] != '\n' && data[i] != '\r' && data[i] != ']')
2660 4 0 if (i >= end || data[i] != ']') return 0;
4 0 if (i >= end || data[i] != ']') return 0;
2665 4 0 if (i >= end || data[i] != ':') return 0;
3 1 if (i >= end || data[i] != ':') return 0;
2667 6 0 while (i < end && data[i] == ' ') i++;
3 3 while (i < end && data[i] == ' ') i++;
2668 3 0 if (i < end && (data[i] == '\n' || data[i] == '\r')) {
0 3 if (i < end && (data[i] == '\n' || data[i] == '\r')) {
2670 0 0 if (i < end && data[i] == '\r' && data[i - 1] == '\n') i++; }
0 0 if (i < end && data[i] == '\r' && data[i - 1] == '\n') i++; }
0 0 if (i < end && data[i] == '\r' && data[i - 1] == '\n') i++; }
2671 3 0 while (i < end && data[i] == ' ') i++;
0 3 while (i < end && data[i] == ' ') i++;
2672 3 0 if (i >= end) return 0;
2675 0 3 if (data[i] == '<')
2680 67 0 while (i < end && data[i] != ' ' && data[i] != '\n' && data[i] != '\r')
64 3 while (i < end && data[i] != ' ' && data[i] != '\n' && data[i] != '\r')
64 0 while (i < end && data[i] != ' ' && data[i] != '\n' && data[i] != '\r')
64 0 while (i < end && data[i] != ' ' && data[i] != '\n' && data[i] != '\r')
2683 3 0 if (data[i - 1] == '>') link_end = i - 1;
2687 17 0 while (i < end && data[i] == ' ') i++;
14 3 while (i < end && data[i] == ' ') i++;
2688 3 0 if (i < end && data[i] != '\n' && data[i] != '\r'
3 0 if (i < end && data[i] != '\n' && data[i] != '\r'
3 0 if (i < end && data[i] != '\n' && data[i] != '\r'
2689 3 0 && data[i] != '\'' && data[i] != '"' && data[i] != '(')
0 3 && data[i] != '\'' && data[i] != '"' && data[i] != '(')
0 0 && data[i] != '\'' && data[i] != '"' && data[i] != '(')
2693 3 0 if (i >= end || data[i] == '\r' || data[i] == '\n') line_end = i;
3 0 if (i >= end || data[i] == '\r' || data[i] == '\n') line_end = i;
0 3 if (i >= end || data[i] == '\r' || data[i] == '\n') line_end = i;
2694 3 0 if (i + 1 < end && data[i] == '\n' && data[i + 1] == '\r')
0 3 if (i + 1 < end && data[i] == '\n' && data[i + 1] == '\r')
0 0 if (i + 1 < end && data[i] == '\n' && data[i + 1] == '\r')
2698 0 3 if (line_end) {
2700 0 0 while (i < end && data[i] == ' ') i++; }
0 0 while (i < end && data[i] == ' ') i++; }
2705 3 0 if (i + 1 < end
2706 0 3 && (data[i] == '\'' || data[i] == '"' || data[i] == '(')) {
0 0 && (data[i] == '\'' || data[i] == '"' || data[i] == '(')) {
2710 34 0 while (i < end && data[i] != '\n' && data[i] != '\r') i++;
31 3 while (i < end && data[i] != '\n' && data[i] != '\r') i++;
31 0 while (i < end && data[i] != '\n' && data[i] != '\r') i++;
2711 2 1 if (i + 1 < end && data[i] == '\n' && data[i + 1] == '\r')
2 0 if (i + 1 < end && data[i] == '\n' && data[i + 1] == '\r')
2 0 if (i + 1 < end && data[i] == '\n' && data[i + 1] == '\r')
2716 3 0 while (i > title_offset && data[i] == ' ')
0 3 while (i > title_offset && data[i] == ' ')
2718 3 0 if (i > title_offset
2719 0 3 && (data[i] == '\'' || data[i] == '"' || data[i] == ')')) {
0 0 && (data[i] == '\'' || data[i] == '"' || data[i] == ')')) {
2723 3 0 if (!line_end || link_end == link_offset)
2727 3 0 if (last)
2730 3 0 if (refs) {
2734 3 0 if (!ref)
2740 3 0 if (title_end > title_offset) {
2759 35 0 while (i < size) {
2762 431 35 while (i < size && line[i] != '\t') {
431 0 while (i < size && line[i] != '\t') {
2764 425 6 if ((line[i] & 0xc0) != 0x80)
2769 35 0 if (i > org)
2772 0 35 if (i >= size)
2777 0 0 } while (tab % 4);
2795 0 7 assert(max_nesting > 0 && renderer);
2807 1 6 if (extensions & HOEDOWN_EXT_UNDERLINE && doc->md.underline) {
1 0 if (extensions & HOEDOWN_EXT_UNDERLINE && doc->md.underline) {
2811 1 6 if (doc->md.emphasis || doc->md.double_emphasis || doc->md.triple_emphasis) {
1 0 if (doc->md.emphasis || doc->md.double_emphasis || doc->md.triple_emphasis) {
0 1 if (doc->md.emphasis || doc->md.double_emphasis || doc->md.triple_emphasis) {
2814 0 6 if (extensions & HOEDOWN_EXT_STRIKETHROUGH)
2816 0 6 if (extensions & HOEDOWN_EXT_HIGHLIGHT)
2820 7 0 if (doc->md.codespan)
2823 6 1 if (doc->md.linebreak)
2826 1 6 if (doc->md.image || doc->md.link || doc->md.footnotes || doc->md.footnote_ref) {
0 1 if (doc->md.image || doc->md.link || doc->md.footnotes || doc->md.footnote_ref) {
0 0 if (doc->md.image || doc->md.link || doc->md.footnotes || doc->md.footnote_ref) {
0 0 if (doc->md.image || doc->md.link || doc->md.footnotes || doc->md.footnote_ref) {
2835 2 5 if (extensions & HOEDOWN_EXT_AUTOLINK) {
2841 0 7 if (extensions & HOEDOWN_EXT_SUPERSCRIPT)
2844 0 7 if (extensions & HOEDOWN_EXT_QUOTE)
2847 0 7 if (extensions & HOEDOWN_EXT_MATH)
2879 1 6 if (footnotes_enabled) {
2889 7 0 if (size >= 3 && memcmp(data, UTF8_BOM, 3) == 0)
0 7 if (size >= 3 && memcmp(data, UTF8_BOM, 3) == 0)
2892 41 7 while (beg < size) /* iterating over lines */
2893 17 24 if (footnotes_enabled && is_footnote(data, beg, size, &end, &doc->footnotes_found))
0 17 if (footnotes_enabled && is_footnote(data, beg, size, &end, &doc->footnotes_found))
2895 3 38 else if (is_ref(data, beg, size, &end, doc->refs))
2899 466 3 while (end < size && data[end] != '\n' && data[end] != '\r')
431 35 while (end < size && data[end] != '\n' && data[end] != '\r')
431 0 while (end < size && data[end] != '\n' && data[end] != '\r')
2903 35 3 if (end > beg)
2906 69 7 while (end < size && (data[end] == '\n' || data[end] == '\r')) {
38 31 while (end < size && (data[end] == '\n' || data[end] == '\r')) {
2908 0 38 if (data[end] == '\n' || (end + 1 < size && data[end + 1] != '\n'))
0 0 if (data[end] == '\n' || (end + 1 < size && data[end + 1] != '\n'))
0 0 if (data[end] == '\n' || (end + 1 < size && data[end + 1] != '\n'))
2920 1 6 if (doc->md.doc_header)
2923 7 0 if (text->size) {
2925 3 4 if (text->data[text->size - 1] != '\n' && text->data[text->size - 1] != '\r')
2932 1 6 if (footnotes_enabled)
2935 2 5 if (doc->md.doc_footer)
2941 1 6 if (footnotes_enabled) {
2946 0 7 assert(doc->work_bufs[BUFFER_SPAN].size == 0);
2947 0 7 assert(doc->work_bufs[BUFFER_BLOCK].size == 0);
2963 0 0 while (i < size && data[i] != '\n' && data[i] != '\r')
0 0 while (i < size && data[i] != '\n' && data[i] != '\r')
0 0 while (i < size && data[i] != '\n' && data[i] != '\r')
2968 0 0 if (i >= size)
2971 0 0 while (i < size && (data[i] == '\n' || data[i] == '\r')) {
0 0 while (i < size && (data[i] == '\n' || data[i] == '\r')) {
2973 0 0 if (data[i] == '\n' || (i + 1 < size && data[i + 1] != '\n'))
0 0 if (data[i] == '\n' || (i + 1 < size && data[i + 1] != '\n'))
0 0 if (data[i] == '\n' || (i + 1 < size && data[i + 1] != '\n'))
2982 0 0 if (doc->md.doc_header)
2987 0 0 if (doc->md.doc_footer)
2993 0 0 assert(doc->work_bufs[BUFFER_SPAN].size == 0);
2994 0 0 assert(doc->work_bufs[BUFFER_BLOCK].size == 0);
3002 0 0 for (i = 0; i < (size_t)doc->work_bufs[BUFFER_SPAN].asize; ++i)
3005 0 0 for (i = 0; i < (size_t)doc->work_bufs[BUFFER_BLOCK].asize; ++i)