diff options
Diffstat (limited to 'parser.c')
| -rw-r--r-- | parser.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/parser.c b/parser.c new file mode 100644 index 0000000..abb8ca6 --- /dev/null +++ b/parser.c @@ -0,0 +1,47 @@ +#include <stdio.h> +#include "parser.h" + + +/* Return the level of title */ +int parse_title(struct md_token* mt){ + + int level = 0; + if (mt->idx >= mt->line_len) { + return -1; + } + + if (mt->line[mt->idx] == '\0' || mt->line[mt->idx] == '\n') { + return -1; + } + + while(mt->idx < mt->line_len && mt->line[mt->idx] == '#') { + level++; + mt->idx++; + } + + mt->start_pos = mt->idx + 1; + char tmp[1024] = ""; + size_t mt_idx = mt->start_pos; + int idx = 0; + while (mt_idx < mt->line_len && mt->line[mt_idx] != '\0' && mt->line[mt_idx] != '\n') { + tmp[idx] = mt->line[mt_idx]; + mt_idx++; + idx++; + } + printf("<h%d>%s</h%d>", level, tmp, level); + return level; +} + + +int parse_content(struct md_token* mt) { + if (mt->idx >= mt->line_len) { + return -1; + } + + if (mt->line[mt->idx] == '\0' || mt->line[mt->idx] == '\n') { + return -1; + } + + printf("<p>%s</p>",mt->line); + return 0; +} |
