Branch Coverage

hoedown/src/markdown.c
Criterion Covered Total %
branch 393 1664 23.6


line true false branch
139 40 0 if (pool->size < pool->asize &&
29 11 if (pool->size < pool->asize &&
161 6 0 while (i < src->size) {
163 115 6 while (i < src->size && src->data[i] != '\\')
115 0 while (i < src->size && src->data[i] != '\\')
166 6 0 if (i > org)
169 0 6 if (i + 1 >= src->size)
183 6 6 for (i = 0; i < length; ++i)
196 3 0 if (!ref)
214 3 0 while (ref != NULL) {
215 0 3 if (ref->id == hash)
229 48 6 for (i = 0; i < REF_TABLE_SIZE; ++i) {
233 3 48 while (r) {
247 0 0 if (!ref)
259 0 0 if (!item)
263 0 0 if (list->head == NULL) {
282 0 0 while (item != NULL) {
283 0 0 if (item->ref->id == hash)
304 0 2 while (item) {
306 0 0 if (free_refs)
343 0 0 for (i = 0; i < size; ++i) {
344 0 0 if (isalnum(data[i]))
357 0 0 return (nb == 1) ? i + 1 : 0;
374 2 0 if (size < 3) return 0;
377 2 0 if (data[0] != '<') return 0;
378 1 1 i = (data[1] == '/') ? 2 : 1;
380 2 0 if (!isalnum(data[i]))
387 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] == '-'))
390 2 0 if (i > 1 && data[i] == '@') {
0 2 if (i > 1 && data[i] == '@') {
391 0 0 if ((j = is_mail_autolink(data + i, size - i)) != 0) {
397 1 1 if (i > 2 && data[i] == ':') {
0 1 if (i > 2 && data[i] == ':') {
403 0 2 if (i >= size)
406 0 2 else if (*autolink) {
409 0 0 while (i < size) {
410 0 0 if (data[i] == '\\') i += 2;
411 0 0 else if (data[i] == '>' || data[i] == '\'' ||
0 0 else if (data[i] == '>' || data[i] == '\'' ||
412 0 0 data[i] == '"' || data[i] == ' ' || data[i] == '\n')
0 0 data[i] == '"' || data[i] == ' ' || data[i] == '\n')
417 0 0 if (i >= size) return 0;
418 0 0 if (i > j && data[i] == '>') return i + 1;
0 0 if (i > j && data[i] == '>') return i + 1;
424 2 0 while (i < size && data[i] != '>') i++;
0 2 while (i < size && data[i] != '>') i++;
425 2 0 if (i >= size) return 0;
437 25 0 if (md->work_bufs[BUFFER_SPAN].size +
441 42 2 while (i < size) {
443 201 23 while (end < size && (action = md->active_char[data[end]]) == 0) {
182 19 while (end < size && (action = md->active_char[data[end]]) == 0) {
447 35 7 if (md->md.normal_text) {
455 19 23 if (end >= size) break;
459 8 11 if (!end) /* no action from the callback */
474 0 0 while (i < size) {
475 0 0 while (i < size && data[i] != c && data[i] != '[')
0 0 while (i < size && data[i] != c && data[i] != '[')
0 0 while (i < size && data[i] != c && data[i] != '[')
478 0 0 if (i == size)
481 0 0 if (data[i] == c)
485 0 0 if (i && data[i - 1] == '\\') {
0 0 if (i && data[i - 1] == '\\') {
489 0 0 if (data[i] == '`') {
494 0 0 while (i < size && data[i] == '`') {
0 0 while (i < size && data[i] == '`') {
498 0 0 if (i >= size) return 0;
502 0 0 while (i < size && bt < span_nb) {
503 0 0 if (!tmp_i && data[i] == c) tmp_i = i;
0 0 if (!tmp_i && data[i] == c) tmp_i = i;
504 0 0 if (data[i] == '`') bt++;
509 0 0 if (i >= size) return tmp_i;
512 0 0 else if (data[i] == '[') {
517 0 0 while (i < size && data[i] != ']') {
0 0 while (i < size && data[i] != ']') {
518 0 0 if (!tmp_i && data[i] == c) tmp_i = i;
0 0 if (!tmp_i && data[i] == c) tmp_i = i;
523 0 0 while (i < size && (data[i] == ' ' || data[i] == '\n'))
0 0 while (i < size && (data[i] == ' ' || data[i] == '\n'))
526 0 0 if (i >= size)
537 0 0 if (tmp_i)
544 0 0 while (i < size && data[i] != cc) {
0 0 while (i < size && data[i] != cc) {
545 0 0 if (!tmp_i && data[i] == c) tmp_i = i;
0 0 if (!tmp_i && data[i] == c) tmp_i = i;
549 0 0 if (i >= size)
569 0 0 if (size > 1 && data[0] == c && data[1] == c) i = 1;
0 0 if (size > 1 && data[0] == c && data[1] == c) i = 1;
0 0 if (size > 1 && data[0] == c && data[1] == c) i = 1;
571 0 0 while (i < size) {
573 0 0 if (!len) return 0;
575 0 0 if (i >= size) return 0;
577 0 0 if (data[i] == c && !_isspace(data[i - 1])) {
0 0 if (data[i] == c && !_isspace(data[i - 1])) {
579 0 0 if (md->ext_flags & HOEDOWN_EXT_NO_INTRA_EMPHASIS) {
580 0 0 if (i + 1 < size && isalnum(data[i + 1]))
0 0 if (i + 1 < size && isalnum(data[i + 1]))
587 0 0 if (md->ext_flags & HOEDOWN_EXT_UNDERLINE && c == '_')
0 0 if (md->ext_flags & HOEDOWN_EXT_UNDERLINE && c == '_')
593 0 0 return r ? i + 1 : 0;
608 0 0 while (i < size) {
610 0 0 if (!len) return 0;
613 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])) {
617 0 0 if (c == '~')
619 0 0 else if (c == '=')
625 0 0 return r ? i + 2 : 0;
640 0 0 while (i < size) {
642 0 0 if (!len) return 0;
646 0 0 if (data[i] != c || _isspace(data[i - 1]))
0 0 if (data[i] != c || _isspace(data[i - 1]))
649 0 0 if (i + 2 < size && data[i + 1] == c && data[i + 2] == c && md->md.triple_emphasis) {
0 0 if (i + 2 < size && data[i + 1] == c && data[i + 2] == c && md->md.triple_emphasis) {
0 0 if (i + 2 < size && data[i + 1] == c && data[i + 2] == c && md->md.triple_emphasis) {
0 0 if (i + 2 < size && data[i + 1] == c && data[i + 2] == c && md->md.triple_emphasis) {
656 0 0 return r ? i + 3 : 0;
658 0 0 } else if (i + 1 < size && data[i + 1] == c) {
0 0 } else if (i + 1 < size && data[i + 1] == c) {
661 0 0 if (!len) return 0;
667 0 0 if (!len) return 0;
681 0 0 if (md->ext_flags & HOEDOWN_EXT_NO_INTRA_EMPHASIS) {
682 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] != '(')
686 0 0 if (size > 2 && data[1] != c) {
0 0 if (size > 2 && data[1] != c) {
689 0 0 if (c == '~' || c == '=' || _isspace(data[1]) || (ret = parse_emph1(ob, md, data + 1, size - 1, c)) == 0)
0 0 if (c == '~' || c == '=' || _isspace(data[1]) || (ret = parse_emph1(ob, md, data + 1, size - 1, c)) == 0)
0 0 if (c == '~' || c == '=' || _isspace(data[1]) || (ret = parse_emph1(ob, md, data + 1, size - 1, c)) == 0)
695 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) {
696 0 0 if (_isspace(data[2]) || (ret = parse_emph2(ob, md, data + 2, size - 2, c)) == 0)
0 0 if (_isspace(data[2]) || (ret = parse_emph2(ob, md, data + 2, size - 2, c)) == 0)
702 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) {
703 0 0 if (c == '~' || c == '=' || _isspace(data[3]) || (ret = parse_emph3(ob, md, data + 3, size - 3, c)) == 0)
0 0 if (c == '~' || c == '=' || _isspace(data[3]) || (ret = parse_emph3(ob, md, data + 3, size - 3, c)) == 0)
0 0 if (c == '~' || c == '=' || _isspace(data[3]) || (ret = parse_emph3(ob, md, data + 3, size - 3, c)) == 0)
717 7 0 if (offset < 2 || data[-1] != ' ' || data[-2] != ' ')
0 7 if (offset < 2 || data[-1] != ' ' || data[-2] != ' ')
0 0 if (offset < 2 || data[-1] != ' ' || data[-2] != ' ')
721 0 0 while (ob->size && ob->data[ob->size - 1] == ' ')
0 0 while (ob->size && ob->data[ob->size - 1] == ' ')
735 2 0 while (nb < size && data[nb] == '`')
1 1 while (nb < size && data[nb] == '`')
740 7 1 for (end = nb; end < size && i < nb; end++) {
741 1 6 if (data[end] == '`') i++;
745 1 0 if (i < nb && end >= size)
750 1 0 while (f_begin < end && data[f_begin] == ' ')
0 1 while (f_begin < end && data[f_begin] == ' ')
754 1 0 while (f_end > nb && data[f_end-1] == ' ')
0 1 while (f_end > nb && data[f_end-1] == ' ')
758 1 0 if (f_begin < f_end) {
760 0 1 if (!md->md.codespan(ob, &work, md->md.opaque))
763 0 0 if (!md->md.codespan(ob, 0, md->md.opaque))
777 0 0 while (nq < size && data[nq] == '"')
0 0 while (nq < size && data[nq] == '"')
782 0 0 for (end = nq; end < size && i < nq; end++) {
783 0 0 if (data[end] == '"') i++;
787 0 0 if (i < nq && end >= size)
792 0 0 while (f_begin < end && data[f_begin] == ' ')
0 0 while (f_begin < end && data[f_begin] == ' ')
796 0 0 while (f_end > nq && data[f_end-1] == ' ')
0 0 while (f_end > nq && data[f_end-1] == ' ')
800 0 0 if (f_begin < f_end) {
802 0 0 if (!md->md.quote(ob, &work, md->md.opaque))
805 0 0 if (!md->md.quote(ob, 0, md->md.opaque))
820 0 0 if (size > 1) {
821 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)
824 0 0 if (md->md.normal_text) {
830 0 0 } else if (size == 1) {
845 1 0 if (end < size && data[end] == '#')
0 1 if (end < size && data[end] == '#')
848 1 0 while (end < size && isalnum(data[end]))
0 1 while (end < size && isalnum(data[end]))
851 1 0 if (end < size && data[end] == ';')
0 1 if (end < size && data[end] == ';')
856 0 0 if (md->md.entity) {
875 2 0 if (end > 2) {
876 2 0 if (md->md.autolink && altype != HOEDOWN_AUTOLINK_NONE) {
0 2 if (md->md.autolink && altype != HOEDOWN_AUTOLINK_NONE) {
884 2 0 else if (md->md.raw_html_tag)
888 2 0 if (!ret) return 0;
898 0 0 if (!md->md.link || md->in_link_body)
0 0 if (!md->md.link || md->in_link_body)
903 0 0 if ((link_len = hoedown_autolink__www(&rewind, link, data, offset, size, HOEDOWN_AUTOLINK_SHORT_DOMAINS)) > 0) {
909 0 0 if (md->md.normal_text) {
930 0 0 if (!md->md.autolink || md->in_link_body)
0 0 if (!md->md.autolink || md->in_link_body)
935 0 0 if ((link_len = hoedown_autolink__email(&rewind, link, data, offset, size, 0)) > 0) {
950 2 0 if (!md->md.autolink || md->in_link_body)
2 0 if (!md->md.autolink || md->in_link_body)
955 2 0 if ((link_len = hoedown_autolink__url(&rewind, link, data, offset, size, 0)) > 0) {
968 6 0 int is_img = (offset && data[-1] == '!'), level;
4 2 int is_img = (offset && data[-1] == '!'), level;
979 2 4 if ((is_img && !md->md.image) || (!is_img && !md->md.link))
2 0 if ((is_img && !md->md.image) || (!is_img && !md->md.link))
4 2 if ((is_img && !md->md.image) || (!is_img && !md->md.link))
4 0 if ((is_img && !md->md.image) || (!is_img && !md->md.link))
983 46 0 for (level = 1; i < size; i++) {
984 46 0 if (data[i] == '\n')
987 0 46 else if (data[i - 1] == '\\')
990 0 46 else if (data[i] == '[')
993 6 40 else if (data[i] == ']') {
995 0 6 if (level <= 0)
1000 6 0 if (i >= size)
1007 6 0 if (md->ext_flags & HOEDOWN_EXT_FOOTNOTES && data[1] == '^') {
6 0 if (md->ext_flags & HOEDOWN_EXT_FOOTNOTES && data[1] == '^') {
1011 0 0 if (txt_e < 3)
1020 0 0 if (fr && !fr->is_used) {
0 0 if (fr && !fr->is_used) {
1021 0 0 if(!add_footnote_ref(&md->footnotes_used, fr))
1028 0 0 if (fr && md->md.footnote_ref)
0 0 if (fr && md->md.footnote_ref)
1036 9 0 while (i < size && _isspace(data[i]))
3 6 while (i < size && _isspace(data[i]))
1040 6 0 if (i < size && data[i] == '(') {
3 3 if (i < size && data[i] == '(') {
1046 0 3 while (i < size && _isspace(data[i]))
0 3 while (i < size && _isspace(data[i]))
1055 56 0 while (i < size) {
1056 0 56 if (data[i] == '\\') i += 2;
1057 0 56 else if (data[i] == '(' && i != 0) {
0 0 else if (data[i] == '(' && i != 0) {
1060 1 55 else if (data[i] == ')') {
1061 0 1 if (nb_p == 0) break;
1063 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;
1067 3 0 if (i >= size) goto cleanup;
1071 2 1 if (data[i] == '\'' || data[i] == '"') {
1077 23 0 while (i < size) {
1078 0 23 if (data[i] == '\\') i += 2;
1079 2 21 else if (data[i] == qtype) {in_title = 0; i++;}
1080 2 19 else if ((data[i] == ')') && !in_title) break;
0 2 else if ((data[i] == ')') && !in_title) break;
1084 2 0 if (i >= size) goto cleanup;
1088 2 0 while (title_e > title_b && _isspace(data[title_e]))
0 2 while (title_e > title_b && _isspace(data[title_e]))
1092 0 2 if (data[title_e] != '\'' && data[title_e] != '"') {
1099 5 0 while (link_e > link_b && _isspace(data[link_e - 1]))
2 3 while (link_e > link_b && _isspace(data[link_e - 1]))
1103 0 3 if (data[link_b] == '<') link_b++;
1104 0 3 if (data[link_e - 1] == '>') link_e--;
1107 3 0 if (link_e > link_b) {
1112 2 1 if (title_e > title_b) {
1121 3 0 else if (i < size && data[i] == '[') {
3 0 else if (i < size && data[i] == '[') {
1128 6 0 while (i < size && data[i] != ']') i++;
3 3 while (i < size && data[i] != ']') i++;
1129 3 0 if (i >= size) goto cleanup;
1133 0 3 if (link_b == link_e) {
1134 0 0 if (text_has_nl) {
1138 0 0 for (j = 1; j < txt_e; j++) {
1139 0 0 if (data[j] != '\n')
1141 0 0 else if (data[j - 1] != ' ')
1157 3 0 if (!lr)
1172 0 0 if (text_has_nl) {
1176 0 0 for (j = 1; j < txt_e; j++) {
1177 0 0 if (data[j] != '\n')
1179 0 0 else if (data[j - 1] != ' ')
1192 0 0 if (!lr)
1204 6 0 if (txt_e > 1) {
1206 2 4 if (is_img) {
1217 6 0 if (link) {
1223 2 4 if (is_img) {
1224 2 0 if (ob->size && ob->data[ob->size - 1] == '!')
2 0 if (ob->size && ob->data[ob->size - 1] == '!')
1235 6 0 return ret ? i : 0;
1244 0 0 if (!md->md.superscript)
1247 0 0 if (size < 2)
1250 0 0 if (data[1] == '(') {
1253 0 0 while (sup_len < size && data[sup_len] != ')' && data[sup_len - 1] != '\\')
0 0 while (sup_len < size && data[sup_len] != ')' && data[sup_len - 1] != '\\')
0 0 while (sup_len < size && data[sup_len] != ')' && data[sup_len - 1] != '\\')
1256 0 0 if (sup_len == size)
1261 0 0 while (sup_len < size && !_isspace(data[sup_len]))
0 0 while (sup_len < size && !_isspace(data[sup_len]))
1265 0 0 if (sup_len - sup_start == 0)
1266 0 0 return (sup_start == 2) ? 3 : 0;
1273 0 0 return (sup_start == 2) ? sup_len + 1 : sup_len;
1286 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++)
24 0 for (i = 0; i < size && data[i] != '\n'; i++)
4 20 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++)
1287 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 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 11 if (data[i] != ' ')
0 0 if (data[i] != ' ')
0 0 if (data[i] != ' ')
1301 15 0 if (size < 3) return 0;
1302 0 15 if (data[0] == ' ') { i++;
1303 0 0 if (data[1] == ' ') { i++;
1304 0 0 if (data[2] == ' ') { i++; } } }
1307 15 0 if (i + 2 >= size
1308 15 0 || (data[i] != '*' && data[i] != '-' && data[i] != '_'))
1 14 || (data[i] != '*' && data[i] != '-' && data[i] != '_'))
1313 2 0 while (i < size && data[i] != '\n') {
2 0 while (i < size && data[i] != '\n') {
1314 1 1 if (data[i] == c) n++;
1315 0 1 else if (data[i] != ' ')
1333 0 0 if (size < 3) return 0;
1334 0 0 if (data[0] == ' ') { i++;
1335 0 0 if (data[1] == ' ') { i++;
1336 0 0 if (data[2] == ' ') { i++; } } }
1339 0 0 if (i + 2 >= size || !(data[i] == '~' || data[i] == '`'))
0 0 if (i + 2 >= size || !(data[i] == '~' || data[i] == '`'))
1345 0 0 while (i < size && data[i] == c) {
0 0 while (i < size && data[i] == c) {
1349 0 0 if (n < 3)
1363 0 0 if (i == 0)
1366 0 0 while (i < size && data[i] == ' ')
0 0 while (i < size && data[i] == ' ')
1371 0 0 if (i < size && data[i] == '{') {
0 0 if (i < size && data[i] == '{') {
1374 0 0 while (i < size && data[i] != '}' && data[i] != '\n') {
0 0 while (i < size && data[i] != '}' && data[i] != '\n') {
0 0 while (i < size && data[i] != '}' && data[i] != '\n') {
1378 0 0 if (i == size || data[i] != '}')
0 0 if (i == size || data[i] != '}')
1383 0 0 while (syn_len > 0 && _isspace(syn_start[0])) {
0 0 while (syn_len > 0 && _isspace(syn_start[0])) {
1387 0 0 while (syn_len > 0 && _isspace(syn_start[syn_len - 1]))
0 0 while (syn_len > 0 && _isspace(syn_start[syn_len - 1]))
1392 0 0 while (i < size && !_isspace(data[i])) {
0 0 while (i < size && !_isspace(data[i])) {
1397 0 0 if (syntax) {
1402 0 0 while (i < size && data[i] != '\n') {
0 0 while (i < size && data[i] != '\n') {
1403 0 0 if (!_isspace(data[i]))
1416 17 35 if (data[0] != '#')
1419 0 17 if (md->ext_flags & HOEDOWN_EXT_SPACE_HEADERS) {
1422 0 0 while (level < size && level < 6 && data[level] == '#')
0 0 while (level < size && level < 6 && data[level] == '#')
1425 0 0 if (level < size && data[level] != ' ')
0 0 if (level < size && data[level] != ' ')
1439 0 11 if (data[i] == '=') {
1440 0 0 for (i = 1; i < size && data[i] == '='; i++);
0 0 for (i = 1; i < size && data[i] == '='; i++);
1441 0 0 while (i < size && data[i] == ' ') i++;
0 0 while (i < size && data[i] == ' ') i++;
1442 0 0 return (i >= size || data[i] == '\n') ? 1 : 0; }
0 0 return (i >= size || data[i] == '\n') ? 1 : 0; }
1445 0 11 if (data[i] == '-') {
1446 0 0 for (i = 1; i < size && data[i] == '-'; i++);
0 0 for (i = 1; i < size && data[i] == '-'; i++);
1447 0 0 while (i < size && data[i] == ' ') i++;
0 0 while (i < size && data[i] == ' ') i++;
1448 0 0 return (i >= size || data[i] == '\n') ? 2 : 0; }
0 0 return (i >= size || data[i] == '\n') ? 2 : 0; }
1458 0 0 while (i < size && data[i] != '\n')
0 0 while (i < size && data[i] != '\n')
1461 0 0 if (++i >= size)
1472 15 0 if (i < size && data[i] == ' ') i++;
0 15 if (i < size && data[i] == ' ') i++;
1473 15 0 if (i < size && data[i] == ' ') i++;
0 15 if (i < size && data[i] == ' ') i++;
1474 15 0 if (i < size && data[i] == ' ') i++;
0 15 if (i < size && data[i] == ' ') i++;
1476 15 0 if (i < size && data[i] == '>') {
0 15 if (i < size && data[i] == '>') {
1477 0 0 if (i + 1 < size && data[i + 1] == ' ')
0 0 if (i + 1 < size && data[i + 1] == ' ')
1490 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] == ' '
1491 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;
1502 4 0 if (i < size && data[i] == ' ') i++;
0 4 if (i < size && data[i] == ' ') i++;
1503 4 0 if (i < size && data[i] == ' ') i++;
0 4 if (i < size && data[i] == ' ') i++;
1504 4 0 if (i < size && data[i] == ' ') i++;
0 4 if (i < size && data[i] == ' ') i++;
1506 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')
1509 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')
1512 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] != ' ')
1515 0 0 if (is_next_headerline(data + i, size - i))
1527 4 0 if (i < size && data[i] == ' ') i++;
0 4 if (i < size && data[i] == ' ') i++;
1528 4 0 if (i < size && data[i] == ' ') i++;
0 4 if (i < size && data[i] == ' ') i++;
1529 4 0 if (i < size && data[i] == ' ') i++;
0 4 if (i < size && data[i] == ' ') i++;
1531 4 0 if (i + 1 >= size ||
0 4 if (i + 1 >= size ||
1532 0 0 (data[i] != '*' && data[i] != '+' && data[i] != '-') ||
1536 0 0 if (is_next_headerline(data + i, size - i))
1558 0 0 while (beg < size) {
1559 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++);
1563 0 0 if (pre)
1567 0 0 else if (is_empty(data + beg, end - beg) &&
0 0 else if (is_empty(data + beg, end - beg) &&
1568 0 0 (end >= size || (prefix_quote(data + end, size - end) == 0 &&
0 0 (end >= size || (prefix_quote(data + end, size - end) == 0 &&
1572 0 0 if (beg < end) { /* copy into the in-place working buffer */
1574 0 0 if (!work_data)
1576 0 0 else if (data + beg != work_data + work_size)
1584 0 0 if (md->md.blockquote)
1601 14 1 while (i < size) {
1602 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 */;
1604 11 3 if (is_empty(data + i, size - i))
1607 11 0 if ((level = is_headerline(data + i, size - i)) != 0)
1611 11 0 is_hrule(data + i, size - i) ||
1626 0 11 if ((md->ext_flags & HOEDOWN_EXT_LAX_SPACING) && !isalnum(data[i])) {
0 0 if ((md->ext_flags & HOEDOWN_EXT_LAX_SPACING) && !isalnum(data[i])) {
1634 0 0 if (data[i] == '<' && md->md.blockhtml &&
1652 8 0 while (work.size && data[work.size - 1] == '\n')
4 4 while (work.size && data[work.size - 1] == '\n')
1655 4 0 if (!level) {
1658 4 0 if (md->md.paragraph)
1664 0 0 if (work.size) {
1669 0 0 while (work.size && data[work.size] != '\n')
0 0 while (work.size && data[work.size] != '\n')
1673 0 0 while (work.size && data[work.size - 1] == '\n')
0 0 while (work.size && data[work.size - 1] == '\n')
1676 0 0 if (work.size > 0) {
1680 0 0 if (md->md.paragraph)
1693 0 0 if (md->md.header)
1711 0 0 if (beg == 0) return 0;
1715 0 0 while (beg < size) {
1720 0 0 if (fence_end != 0 && fence_trail.size == 0) {
0 0 if (fence_end != 0 && fence_trail.size == 0) {
1725 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++);
1727 0 0 if (beg < end) {
1730 0 0 if (is_empty(data + beg, end - beg))
1737 0 0 if (work->size && work->data[work->size - 1] != '\n')
0 0 if (work->size && work->data[work->size - 1] != '\n')
1740 0 0 if (md->md.blockcode)
1741 0 0 md->md.blockcode(ob, work, lang.size ? &lang : NULL, md->md.opaque);
1756 0 0 while (beg < size) {
1757 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++) {};
1760 0 0 if (pre)
1762 0 0 else if (!is_empty(data + beg, end - beg))
1766 0 0 if (beg < end) {
1769 0 0 if (is_empty(data + beg, end - beg))
1776 0 0 while (work->size && work->data[work->size - 1] == '\n')
0 0 while (work->size && work->data[work->size - 1] == '\n')
1781 0 0 if (md->md.blockcode)
1798 0 0 while (orgpre < 3 && orgpre < size && data[orgpre] == ' ')
0 0 while (orgpre < 3 && orgpre < size && data[orgpre] == ' ')
1802 0 0 if (!beg)
1805 0 0 if (!beg)
1810 0 0 while (end < size && data[end - 1] != '\n')
0 0 while (end < size && data[end - 1] != '\n')
1822 0 0 while (beg < size) {
1827 0 0 while (end < size && data[end - 1] != '\n')
0 0 while (end < size && data[end - 1] != '\n')
1831 0 0 if (is_empty(data + beg, end - beg)) {
1839 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] == ' ')
1844 0 0 if (md->ext_flags & HOEDOWN_EXT_FENCED_CODE) {
1845 0 0 if (is_codefence(data + beg + i, end - beg - i, NULL) != 0)
1851 0 0 if (!in_fence) {
1857 0 0 if (in_empty && (
0 0 if (in_empty && (
1858 0 0 ((*flags & HOEDOWN_LIST_ORDERED) && has_next_uli) ||
0 0 ((*flags & HOEDOWN_LIST_ORDERED) && has_next_uli) ||
1859 0 0 (!(*flags & HOEDOWN_LIST_ORDERED) && has_next_oli))){
1865 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) {
1866 0 0 if (in_empty)
1869 0 0 if (pre == orgpre) /* the following item must have */
1872 0 0 if (!sublist)
1878 0 0 else if (in_empty && pre == 0) {
1882 0 0 else if (in_empty) {
1895 0 0 if (has_inside_empty)
1898 0 0 if (*flags & HOEDOWN_LI_BLOCK) {
1900 0 0 if (sublist && sublist < work->size) {
0 0 if (sublist && sublist < work->size) {
1908 0 0 if (sublist && sublist < work->size) {
0 0 if (sublist && sublist < work->size) {
1917 0 0 if (md->md.listitem)
1935 0 0 while (i < size) {
1939 0 0 if (!j || (flags & HOEDOWN_LI_END))
0 0 if (!j || (flags & HOEDOWN_LI_END))
1943 0 0 if (md->md.list)
1956 48 0 while (level < size && level < 6 && data[level] == '#')
31 17 while (level < size && level < 6 && data[level] == '#')
1959 34 0 for (i = level; i < size && data[i] == ' '; i++);
17 17 for (i = level; i < size && data[i] == ' '; i++);
1961 75 0 for (end = i; end < size && data[end] != '\n'; end++);
58 17 for (end = i; end < size && data[end] != '\n'; end++);
1964 17 0 while (end && data[end - 1] == '#')
0 17 while (end && data[end - 1] == '#')
1967 17 0 while (end && data[end - 1] == ' ')
0 17 while (end && data[end - 1] == ' ')
1970 17 0 if (end > i) {
1975 17 0 if (md->md.header)
1993 0 0 if (md->md.footnote_def)
2006 0 1 if (footnotes->count == 0)
2012 0 0 while (item) {
2018 0 0 if (md->md.footnotes)
2036 0 0 if (tag_len + 3 >= size ||
0 0 if (tag_len + 3 >= size ||
2037 0 0 strncasecmp((char *)data + 2, tag, tag_len) != 0 ||
2044 0 0 if (i < size && (w = is_empty(data + i, size - i)) == 0)
0 0 if (i < size && (w = is_empty(data + i, size - i)) == 0)
2049 0 0 if (i < size)
2066 0 0 while (i < size) {
2068 0 0 while (i < size && !(data[i - 1] == '<' && data[i] == '/')) {
0 0 while (i < size && !(data[i - 1] == '<' && data[i] == '/')) {
0 0 while (i < size && !(data[i - 1] == '<' && data[i] == '/')) {
2069 0 0 if (data[i] == '\n')
2082 0 0 if (start_of_line && block_lines > 0 && data[i - 2] != '\n')
0 0 if (start_of_line && block_lines > 0 && data[i - 2] != '\n')
2085 0 0 if (i + 2 + tag_size >= size)
2089 0 0 if (end_tag)
2106 0 0 if (size < 2 || data[0] != '<')
0 0 if (size < 2 || data[0] != '<')
2110 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] != ' ')
2113 0 0 if (i < size)
2117 0 0 if (!curtag) {
2120 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] == '-') {
2123 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] == '>'))
2128 0 0 if (i < size)
2131 0 0 if (j) {
2133 0 0 if (do_render && md->md.blockhtml)
0 0 if (do_render && md->md.blockhtml)
2140 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')) {
2142 0 0 while (i < size && data[i] != '>')
0 0 while (i < size && data[i] != '>')
2145 0 0 if (i + 1 < size) {
2148 0 0 if (j) {
2150 0 0 if (do_render && md->md.blockhtml)
0 0 if (do_render && md->md.blockhtml)
2167 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) {
2171 0 0 if (!tag_end)
2176 0 0 if (do_render && md->md.blockhtml)
0 0 if (do_render && md->md.blockhtml)
2195 0 0 if (!md->md.table_cell || !md->md.table_row)
0 0 if (!md->md.table_cell || !md->md.table_row)
2200 0 0 if (i < size && data[i] == '|')
0 0 if (i < size && data[i] == '|')
2203 0 0 for (col = 0; col < columns && i < size; ++col) {
2209 0 0 while (i < size && _isspace(data[i]))
0 0 while (i < size && _isspace(data[i]))
2214 0 0 while (i < size && data[i] != '|')
0 0 while (i < size && data[i] != '|')
2219 0 0 while (cell_end > cell_start && _isspace(data[cell_end]))
0 0 while (cell_end > cell_start && _isspace(data[cell_end]))
2229 0 0 for (; col < columns; ++col) {
2252 0 0 while (i < size && data[i] != '\n')
0 0 while (i < size && data[i] != '\n')
2253 0 0 if (data[i++] == '|')
2256 0 0 if (i == size || pipes == 0)
2261 0 0 while (header_end > 0 && _isspace(data[header_end - 1]))
0 0 while (header_end > 0 && _isspace(data[header_end - 1]))
2264 0 0 if (data[0] == '|')
2267 0 0 if (header_end && data[header_end - 1] == '|')
0 0 if (header_end && data[header_end - 1] == '|')
2270 0 0 if (pipes < 0)
2278 0 0 if (i < size && data[i] == '|')
0 0 if (i < size && data[i] == '|')
2282 0 0 while (under_end < size && data[under_end] != '\n')
0 0 while (under_end < size && data[under_end] != '\n')
2285 0 0 for (col = 0; col < *columns && i < under_end; ++col) {
0 0 for (col = 0; col < *columns && i < under_end; ++col) {
2288 0 0 while (i < under_end && data[i] == ' ')
0 0 while (i < under_end && data[i] == ' ')
2291 0 0 if (data[i] == ':') {
2296 0 0 while (i < under_end && data[i] == '-') {
0 0 while (i < under_end && data[i] == '-') {
2300 0 0 if (i < under_end && data[i] == ':') {
0 0 if (i < under_end && data[i] == ':') {
2305 0 0 while (i < under_end && data[i] == ' ')
0 0 while (i < under_end && data[i] == ' ')
2308 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] != '+')
2311 0 0 if (dashes < 3)
2317 0 0 if (col < *columns)
2350 0 0 if (i > 0) {
2352 0 0 while (i < size) {
2358 0 0 while (i < size && data[i] != '\n')
0 0 while (i < size && data[i] != '\n')
2359 0 0 if (data[i++] == '|')
2362 0 0 if (pipes == 0 || i == size) {
2379 0 0 if (md->md.table)
2397 6 0 if (md->work_bufs[BUFFER_SPAN].size +
2401 41 6 while (beg < size) {
2405 17 24 if (is_atxheader(md, txt_data, end))
2408 0 24 else if (data[beg] == '<' && md->md.blockhtml &&
0 0 else if (data[beg] == '<' && md->md.blockhtml &&
0 0 else if (data[beg] == '<' && md->md.blockhtml &&
2412 20 4 else if ((i = is_empty(txt_data, end)) != 0)
2415 0 4 else if (is_hrule(txt_data, end)) {
2416 0 0 if (md->md.hrule)
2419 0 0 while (beg < size && data[beg] != '\n')
0 0 while (beg < size && data[beg] != '\n')
2425 0 4 else if ((md->ext_flags & HOEDOWN_EXT_FENCED_CODE) != 0 &&
0 0 else if ((md->ext_flags & HOEDOWN_EXT_FENCED_CODE) != 0 &&
2429 0 4 else if ((md->ext_flags & HOEDOWN_EXT_TABLES) != 0 &&
0 0 else if ((md->ext_flags & HOEDOWN_EXT_TABLES) != 0 &&
2433 0 4 else if (prefix_quote(txt_data, end))
2436 4 0 else if (!(md->ext_flags & HOEDOWN_EXT_DISABLE_INDENTED_CODE) && prefix_code(txt_data, end))
0 4 else if (!(md->ext_flags & HOEDOWN_EXT_DISABLE_INDENTED_CODE) && prefix_code(txt_data, end))
2439 0 4 else if (prefix_uli(txt_data, end))
2442 0 4 else if (prefix_oli(txt_data, end))
2469 16 1 if (beg + 3 >= end) return 0;
2470 3 13 if (data[beg] == ' ') { i = 1;
2471 0 3 if (data[beg + 1] == ' ') { i = 2;
2472 0 0 if (data[beg + 2] == ' ') { i = 3;
2473 0 0 if (data[beg + 3] == ' ') return 0; } } }
2477 4 12 if (data[i] != '[') return 0;
2479 4 0 if (i >= end || data[i] != '^') return 0;
0 4 if (i >= end || data[i] != '^') return 0;
2482 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] != ']')
2484 0 0 if (i >= end || data[i] != ']') return 0;
0 0 if (i >= end || data[i] != ']') return 0;
2489 0 0 if (i >= end || data[i] != ':') return 0;
0 0 if (i >= end || data[i] != ':') return 0;
2498 0 0 while (i < end) {
2499 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++;
2502 0 0 if (is_empty(data + start, i - start)) {
2504 0 0 if (i < end && (data[i] == '\n' || data[i] == '\r')) {
0 0 if (i < end && (data[i] == '\n' || data[i] == '\r')) {
2506 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++;
2514 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] == ' ')
2520 0 0 if (ind == 0) {
2521 0 0 if (start == id_end + 2 && data[start] == '\t') {}
0 0 if (start == id_end + 2 && data[start] == '\t') {}
2524 0 0 else if (in_empty) {
2533 0 0 if (i < end) {
2535 0 0 if (i < end && (data[i] == '\n' || data[i] == '\r')) {
0 0 if (i < end && (data[i] == '\n' || data[i] == '\r')) {
2537 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++;
2543 0 0 if (last)
2546 0 0 if (list) {
2549 0 0 if (!ref)
2551 0 0 if (!add_footnote_ref(list, ref)) {
2573 33 1 if (beg + 3 >= end) return 0;
2574 3 30 if (data[beg] == ' ') { i = 1;
2575 0 3 if (data[beg + 1] == ' ') { i = 2;
2576 0 0 if (data[beg + 2] == ' ') { i = 3;
2577 0 0 if (data[beg + 3] == ' ') return 0; } } }
2581 4 29 if (data[i] != '[') return 0;
2584 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] != ']')
2586 4 0 if (i >= end || data[i] != ']') return 0;
4 0 if (i >= end || data[i] != ']') return 0;
2591 4 0 if (i >= end || data[i] != ':') return 0;
3 1 if (i >= end || data[i] != ':') return 0;
2593 6 0 while (i < end && data[i] == ' ') i++;
3 3 while (i < end && data[i] == ' ') i++;
2594 3 0 if (i < end && (data[i] == '\n' || data[i] == '\r')) {
0 3 if (i < end && (data[i] == '\n' || data[i] == '\r')) {
2596 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++; }
2597 3 0 while (i < end && data[i] == ' ') i++;
0 3 while (i < end && data[i] == ' ') i++;
2598 3 0 if (i >= end) return 0;
2601 0 3 if (data[i] == '<')
2606 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')
2609 0 3 if (data[i - 1] == '>') link_end = i - 1;
2613 17 0 while (i < end && data[i] == ' ') i++;
14 3 while (i < end && data[i] == ' ') i++;
2614 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'
2615 3 0 && data[i] != '\'' && data[i] != '"' && data[i] != '(')
0 3 && data[i] != '\'' && data[i] != '"' && data[i] != '(')
0 0 && data[i] != '\'' && data[i] != '"' && data[i] != '(')
2619 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;
2620 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')
2624 0 3 if (line_end) {
2626 0 0 while (i < end && data[i] == ' ') i++; }
0 0 while (i < end && data[i] == ' ') i++; }
2631 3 0 if (i + 1 < end
2632 0 3 && (data[i] == '\'' || data[i] == '"' || data[i] == '(')) {
0 0 && (data[i] == '\'' || data[i] == '"' || data[i] == '(')) {
2636 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++;
2637 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')
2642 3 0 while (i > title_offset && data[i] == ' ')
0 3 while (i > title_offset && data[i] == ' ')
2644 3 0 if (i > title_offset
2645 0 3 && (data[i] == '\'' || data[i] == '"' || data[i] == ')')) {
0 0 && (data[i] == '\'' || data[i] == '"' || data[i] == ')')) {
2649 3 0 if (!line_end || link_end == link_offset)
2653 3 0 if (last)
2656 3 0 if (refs) {
2660 3 0 if (!ref)
2666 3 0 if (title_end > title_offset) {
2679 28 0 while (i < size) {
2682 389 28 while (i < size && line[i] != '\t') {
389 0 while (i < size && line[i] != '\t') {
2686 28 0 if (i > org)
2689 0 28 if (i >= size)
2694 0 0 } while (tab % 4);
2712 0 6 assert(max_nesting > 0 && renderer);
2715 6 0 if (!md)
2725 1 5 if (md->md.emphasis || md->md.double_emphasis || md->md.triple_emphasis) {
1 0 if (md->md.emphasis || md->md.double_emphasis || md->md.triple_emphasis) {
0 1 if (md->md.emphasis || md->md.double_emphasis || md->md.triple_emphasis) {
2728 0 5 if (extensions & HOEDOWN_EXT_STRIKETHROUGH)
2730 0 5 if (extensions & HOEDOWN_EXT_HIGHLIGHT)
2734 6 0 if (md->md.codespan)
2737 5 1 if (md->md.linebreak)
2740 1 5 if (md->md.image || md->md.link)
1 0 if (md->md.image || md->md.link)
2747 2 4 if (extensions & HOEDOWN_EXT_AUTOLINK) {
2753 0 6 if (extensions & HOEDOWN_EXT_SUPERSCRIPT)
2756 0 6 if (extensions & HOEDOWN_EXT_QUOTE)
2778 6 0 if (!text)
2790 1 5 if (footnotes_enabled) {
2800 6 0 if (doc_size >= 3 && memcmp(document, UTF8_BOM, 3) == 0)
0 6 if (doc_size >= 3 && memcmp(document, UTF8_BOM, 3) == 0)
2803 34 6 while (beg < doc_size) /* iterating over lines */
2804 17 17 if (footnotes_enabled && is_footnote(document, beg, doc_size, &end, &md->footnotes_found))
0 17 if (footnotes_enabled && is_footnote(document, beg, doc_size, &end, &md->footnotes_found))
2806 3 31 else if (is_ref(document, beg, doc_size, &end, md->refs))
2810 417 3 while (end < doc_size && document[end] != '\n' && document[end] != '\r')
389 28 while (end < doc_size && document[end] != '\n' && document[end] != '\r')
389 0 while (end < doc_size && document[end] != '\n' && document[end] != '\r')
2814 28 3 if (end > beg)
2817 56 6 while (end < doc_size && (document[end] == '\n' || document[end] == '\r')) {
31 25 while (end < doc_size && (document[end] == '\n' || document[end] == '\r')) {
2819 0 31 if (document[end] == '\n' || (end + 1 < doc_size && document[end + 1] != '\n'))
0 0 if (document[end] == '\n' || (end + 1 < doc_size && document[end + 1] != '\n'))
0 0 if (document[end] == '\n' || (end + 1 < doc_size && document[end + 1] != '\n'))
2831 1 5 if (md->md.doc_header)
2834 6 0 if (text->size) {
2836 3 3 if (text->data[text->size - 1] != '\n' && text->data[text->size - 1] != '\r')
2843 1 5 if (footnotes_enabled)
2846 2 4 if (md->md.doc_footer)
2852 1 5 if (footnotes_enabled) {
2857 0 6 assert(md->work_bufs[BUFFER_SPAN].size == 0);
2858 0 6 assert(md->work_bufs[BUFFER_BLOCK].size == 0);
2866 0 0 for (i = 0; i < (size_t)md->work_bufs[BUFFER_SPAN].asize; ++i)
2869 0 0 for (i = 0; i < (size_t)md->work_bufs[BUFFER_BLOCK].asize; ++i)