X-Git-Url: https://git.danieliu.xyz/?p=smdp.git;a=blobdiff_plain;f=src%2Fparser.c;h=5ca7ea26a211c2fc223a23a7706bb59e6a31303d;hp=59b6b529c83dd83b25d3ea8bdc81fed2f94d3021;hb=680d0478fc66d6d25b1f258be0114d6c915ec0a0;hpb=d8422e5afe7b7637f8412f3d27969a52d2a7f014 diff --git a/src/parser.c b/src/parser.c index 59b6b52..5ca7ea2 100644 --- a/src/parser.c +++ b/src/parser.c @@ -68,6 +68,14 @@ deck_t *markdown_load(FILE *input) { // clear text (text->reset)(text); + } else if(line && CHECK_BIT(bits, IS_STOP)) { + + // set stop bit on last line + SET_BIT(line->bits, IS_STOP); + + // clear text + (text->reset)(text); + // if text is markdown hr } else if(CHECK_BIT(bits, IS_HR) && CHECK_BIT(line->bits, IS_EMPTY)) { @@ -308,6 +316,15 @@ int markdown_analyse(cstring_t *text, int prev) { // count leading spaces offset = next_nonblank(text, 0); + // IS_STOP + if((offset < CODE_INDENT || !CHECK_BIT(prev, IS_CODE)) && + (!wcsncmp(&text->value[offset], L"
", 4) || + !wcsncmp(&text->value[offset], L"
", 4) || + !wcsncmp(&text->value[offset], L"^", 1))) { + SET_BIT(bits, IS_STOP); + return bits; + } + // strip trailing spaces for(eol = text->size; eol > offset && iswspace(text->value[eol - 1]); eol--); @@ -381,7 +398,8 @@ int markdown_analyse(cstring_t *text, int prev) { // IS_CODE if(offset >= CODE_INDENT && (CHECK_BIT(prev, IS_EMPTY) || - CHECK_BIT(prev, IS_CODE))) { + CHECK_BIT(prev, IS_CODE) || + CHECK_BIT(prev, IS_STOP))) { SET_BIT(bits, IS_CODE); } else {