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

Function parse_emph1

libraries/hoedown/src/document.c:604–641  ·  view source on GitHub ↗

parse_emph1 • parsing single emphase */ closed by a symbol not preceded by spacing and not followed by symbol */

Source from the content-addressed store, hash-verified

602/* parse_emph1 • parsing single emphase */
603/* closed by a symbol not preceded by spacing and not followed by symbol */
604static size_t
605parse_emph1(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t size, uint8_t c)
606{
607 size_t i = 0, len;
608 hoedown_buffer *work = 0;
609 int r;
610
611 /* skipping one symbol if coming from emph3 */
612 if (size > 1 && data[0] == c && data[1] == c) i = 1;
613
614 while (i < size) {
615 len = find_emph_char(data + i, size - i, c);
616 if (!len) return 0;
617 i += len;
618 if (i >= size) return 0;
619
620 if (data[i] == c && !_isspace(data[i - 1])) {
621
622 if (doc->ext_flags & HOEDOWN_EXT_NO_INTRA_EMPHASIS) {
623 if (i + 1 < size && isalnum(data[i + 1]))
624 continue;
625 }
626
627 work = newbuf(doc, BUFFER_SPAN);
628 parse_inline(work, doc, data, i);
629
630 if (doc->ext_flags & HOEDOWN_EXT_UNDERLINE && c == '_')
631 r = doc->md.underline(ob, work, &doc->data);
632 else
633 r = doc->md.emphasis(ob, work, &doc->data);
634
635 popbuf(doc, BUFFER_SPAN);
636 return r ? i + 1 : 0;
637 }
638 }
639
640 return 0;
641}
642
643/* parse_emph2 • parsing single emphase */
644static size_t

Callers 2

parse_emph3Function · 0.85
char_emphasisFunction · 0.85

Calls 5

find_emph_charFunction · 0.85
_isspaceFunction · 0.85
newbufFunction · 0.85
parse_inlineFunction · 0.85
popbufFunction · 0.85

Tested by

no test coverage detected