document_t *markdown_load(FILE *input) {
- int c, i, bits;
+ int c = 0, i = 0, bits = 0;
document_t *doc;
page_t *page;
// calc offset
line->offset = next_nonblank(text, 0);
+
+ // new text
+ text = cstring_init();
}
- } else if('\t') {
+ } else if(c == '\t') {
// expand tab to spaces
for (i = 0; i <= 4; i++)
}
}
- //TODO detect header
+ // detect header
+ line = doc->page->line;
+ if(line && line->text->size > 0 && line->text->text[0] == '%') {
+
+ // assign header to document
+ doc->header = line;
+
+ // find first non-header line
+ while(line->text->size > 0 && line->text->text[0] == '%') {
+ line = line->next;
+ }
+
+ // split linked list
+ line->prev->next = (void*)0;
+ line->prev = (void*)0;
+
+ // remove header lines from page
+ doc->page->line = line;
+ }
return doc;
}
int markdown_analyse(cstring_t *text) {
- int c, i, bits,
- offset, eol,
- equals, hashes, stars, minus, plus,
- spaces, other;
+ int i = 0, bits = 0,
+ offset = 0, eol = 0,
+ equals = 0, hashes = 0, stars = 0, minus = 0, plus = 0,
+ spaces = 0, other = 0;
// count leading spaces
offset = next_nonblank(text, 0);
return i;
};
+int next_blank(cstring_t *text, int i) {
+ while ((i < text->size) && !isspace((text->text)[i]))
+ ++i;
+ return i;
+};
+