pinosaur
/
smdp.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Shorten sample lines.
[smdp.git]
/
parser.c
diff --git
a/parser.c
b/parser.c
index
dc2677d
..
1ff125c
100644
(file)
--- a/
parser.c
+++ b/
parser.c
@@
-39,7
+39,8
@@
deck_t *markdown_load(FILE *input) {
deck_t *deck = new_deck();
slide_t *slide = new_slide();
deck_t *deck = new_deck();
slide_t *slide = new_slide();
- line_t *line;
+ line_t *line = NULL;
+ line_t *tmp = NULL;
cstring_t *text = cstring_init();
// assign first slide to deck
cstring_t *text = cstring_init();
// assign first slide to deck
@@
-52,9
+53,15
@@
deck_t *markdown_load(FILE *input) {
// markdown analyse
bits = markdown_analyse(text);
// markdown analyse
bits = markdown_analyse(text);
+ // if first line in file is markdown hr
+ if(!line && CHECK_BIT(bits, IS_HR)) {
+
+ // clear text
+ (text->reset)(text);
+
// if text is markdown hr
// if text is markdown hr
- if(CHECK_BIT(bits, IS_HR) &&
- CHECK_BIT(line->bits, IS_EMPTY)) {
+
} else
if(CHECK_BIT(bits, IS_HR) &&
+
CHECK_BIT(line->bits, IS_EMPTY)) {
slide->lines = lc;
slide->lines = lc;
@@
-133,7
+140,7
@@
deck_t *markdown_load(FILE *input) {
}
}
- } else if(isprint(c) || isspace(c)) {
+ } else if(isprint(c) || isspace(
(unsigned char)
c)) {
// add char to line
(text->expand)(text, c);
// add char to line
(text->expand)(text, c);
@@
-198,7
+205,7
@@
deck_t *markdown_load(FILE *input) {
if(line->next)
line->next->prev = line->prev;
if(line->next)
line->next->prev = line->prev;
- // set bits on revious line
+ // set bits on
p
revious line
if(CHECK_BIT(line->bits, IS_H1)) {
SET_BIT(line->prev->bits, IS_H1);
} else {
if(CHECK_BIT(line->bits, IS_H1)) {
SET_BIT(line->prev->bits, IS_H1);
} else {
@@
-208,9
+215,13
@@
deck_t *markdown_load(FILE *input) {
// adjust line count
slide->lines -= 1;
// adjust line count
slide->lines -= 1;
+ // maintain loop condition
+ tmp = line;
+ line = line->prev;
+
// delete line
// delete line
- (
line->text->delete)(line
->text);
- free(
line
);
+ (
tmp->text->delete)(tmp
->text);
+ free(
tmp
);
}
line = line->next;
}
}
line = line->next;
}
@@
-235,7
+246,7
@@
int markdown_analyse(cstring_t *text) {
offset = next_nonblank(text, 0);
// strip trailing spaces
offset = next_nonblank(text, 0);
// strip trailing spaces
- for(eol = text->size; eol > offset && isspace(text->text[eol - 1]); eol--);
+ for(eol = text->size; eol > offset && isspace(
(unsigned char)
text->text[eol - 1]); eol--);
// IS_CODE
if(offset >= CODE_INDENT) {
// IS_CODE
if(offset >= CODE_INDENT) {
@@
-380,14
+391,14
@@
int length_utf8(char ch) {
}
int next_nonblank(cstring_t *text, int i) {
}
int next_nonblank(cstring_t *text, int i) {
- while ((i < text->size) && isspace((text->text)[i]))
+ while ((i < text->size) && isspace((
unsigned char) (
text->text)[i]))
++i;
return i;
}
int next_blank(cstring_t *text, int i) {
++i;
return i;
}
int next_blank(cstring_t *text, int i) {
- while ((i < text->size) && !isspace((text->text)[i]))
+ while ((i < text->size) && !isspace((
unsigned char) (
text->text)[i]))
++i;
return i;
++i;
return i;