X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=src%2Fparser.c;h=04a0b490f6ed2be7cfafc0d1ea9d33c09e36f02d;hb=2669a43752c6d8386826a1d96fa64c42d9cc77b9;hp=c04faccf8ec2af3801698aa9959442908854eedd;hpb=a1d883fc5b7acbf45fdc80a7806b4d4c21fdcd1f;p=smdp.git diff --git a/src/parser.c b/src/parser.c index c04facc..04a0b49 100644 --- a/src/parser.c +++ b/src/parser.c @@ -22,8 +22,10 @@ */ #include +#include #include #include +#include #include "parser.h" @@ -34,20 +36,21 @@ deck_t *markdown_load(FILE *input) { int l = 0; // line length int hc = 0; // header count int lc = 0; // line count - int sc = 0; // slide count + int sc = 1; // slide count int bits = 0; // markdown bits deck_t *deck = new_deck(); - slide_t *slide = new_slide(); + slide_t *slide = deck->slide; line_t *line = NULL; line_t *tmp = NULL; cstring_t *text = cstring_init(); - // assign first slide to deck - deck->slide = slide; - sc++; - while ((c = fgetc(input)) != EOF) { + if (ferror(input)) { + fprintf(stderr, "markdown_load() failed to read input: %s\n", strerror(errno)); + exit(EXIT_FAILURE); + } + if(c == '\n') { // markdown analyse @@ -266,7 +269,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); } @@ -337,12 +340,12 @@ 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)) { @@ -501,6 +504,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++; @@ -511,4 +521,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)); } -