scdoc2mdoc

A fork of scdoc to output mdoc(7)
git clone git://git.sgregoratto.me/scdoc2mdoc
Log | Files | Refs | README | LICENSE

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:
Mscdoc.5.scd | 4++--
Msrc/main.c | 31++++++++++++++++++-------------
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{")