X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=src%2Fparser.c;h=7a5498654a6d65a5385033171effad0c07fd8cd3;hb=a10fcae3cba4f58550b24b0029f3932615dadbc3;hp=a573106888282a4b060fed5cd4398de3185de418;hpb=618df4fd72bc78c3012a0987ab9e7183a404b20c;p=smdp.git diff --git a/src/parser.c b/src/parser.c index a573106..7a54986 100644 --- a/src/parser.c +++ b/src/parser.c @@ -266,7 +266,7 @@ deck_t *markdown_load(FILE *input) { } tmp = tmp->next; } - + for(tmp = line; tmp != list_last_level_1; tmp = tmp->next) { SET_BIT(tmp->bits, IS_UNORDERED_LIST_1); } @@ -302,11 +302,12 @@ int markdown_analyse(cstring_t *text) { // strip trailing spaces for(eol = text->size; eol > offset && isspace((unsigned char) text->text[eol - 1]); eol--); + // IS_UNORDERED_LIST_# if(text->size >= offset + 2 && (text->text[offset] == '*' || text->text[offset] == '-') && text->text[offset + 1] == ' ') { - for(i = offset; itext[i] != '*' && text->text[i] != '-' && text->text[i] != ' ') { @@ -328,7 +329,7 @@ int markdown_analyse(cstring_t *text) { if(unordered_list_level == 0) { unordered_list_level = 1; unordered_list_level_offset[1] = offset; - } + } switch(unordered_list_level) { case 1: SET_BIT(bits, IS_UNORDERED_LIST_1); break; @@ -336,20 +337,22 @@ int markdown_analyse(cstring_t *text) { case 3: SET_BIT(bits, IS_UNORDERED_LIST_3); break; default: break; } - + break; } + } } - + if(!CHECK_BIT(bits, IS_UNORDERED_LIST_1) && !CHECK_BIT(bits, IS_UNORDERED_LIST_2) && !CHECK_BIT(bits, IS_UNORDERED_LIST_3)) { unordered_list_level = 0; + // IS_CODE if(offset >= CODE_INDENT) { - // IS_CODE SET_BIT(bits, IS_CODE); + } else { for(i = offset; i < eol; i++) { @@ -498,6 +501,13 @@ int next_nonblank(cstring_t *text, int i) { return i; } +int prev_blank(cstring_t *text, int i) { + while ((i > 0) && !isspace((unsigned char) (text->text)[i])) + i--; + + return i; +} + int next_blank(cstring_t *text, int i) { while ((i < text->size) && !isspace((unsigned char) (text->text)[i])) i++; @@ -508,4 +518,3 @@ int next_blank(cstring_t *text, int i) { int next_word(cstring_t *text, int i) { return next_nonblank(text, next_blank(text, i)); } -