commit 56b882d63f1409616a701eae40976aba7ef39583
parent 3f4de3da0a6326a32960ef06d5fa808f64104e65
Author: Jakub Kądziołka <kuba@kadziolka.net>
Date: Sat, 17 Nov 2018 00:47:37 +0100
Support empty table cells
Diffstat:
2 files changed, 20 insertions(+), 15 deletions(-)
diff --git a/scdoc.5.scd b/scdoc.5.scd
@@ -133,7 +133,7 @@ To conclude your table, add an empty line after the last row.
```
[[ *Foo*
:- _Bar_
-:- _Baz_
+:-
| *Row 1*
: Hello
:] world!
@@ -144,7 +144,7 @@ To conclude your table, add an empty line after the last row.
[[ *Foo*
:- _Bar_
-:- _Baz_
+:-
| *Row 1*
: Hello
:] world!
diff --git a/src/main.c b/src/main.c
@@ -487,21 +487,26 @@ static void parse_table(struct parser *p, uint32_t style) {
parser_fatal(p, "Expected one of '[', '-', ']', or ' '");
break;
}
- if ((ch = parser_getch(p)) != ' ') {
- parser_fatal(p, "Expected ' '");
- break;
- }
- // Read out remainder of the text
curcell->contents = str_create();
- while ((ch = parser_getch(p)) != UTF8_INVALID) {
- switch (ch) {
- case '\n':
- goto commit_cell;
- default:;
- int ret = str_append_ch(curcell->contents, ch);
- assert(ret != -1);
- break;
+ switch (ch = parser_getch(p)) {
+ case ' ':
+ // Read out remainder of the text
+ while ((ch = parser_getch(p)) != UTF8_INVALID) {
+ switch (ch) {
+ case '\n':
+ goto commit_cell;
+ default:;
+ int ret = str_append_ch(curcell->contents, ch);
+ assert(ret != -1);
+ break;
+ }
}
+ break;
+ case '\n':
+ goto commit_cell;
+ default:
+ parser_fatal(p, "Expected ' ' or a newline");
+ break;
}
commit_cell:
if (strstr(curcell->contents->str, "T{")