diff options
author | Xavier Mendez <me@jmendeth.com> | 2015-05-16 17:53:36 +0200 |
---|---|---|
committer | Xavier Mendez <me@jmendeth.com> | 2015-05-16 17:53:36 +0200 |
commit | d01eba91d23cea88c34ca64ece5b0995167e2c48 (patch) | |
tree | b135feecdbb67b54d54d540cf8df00b25af3597d | |
parent | 365ad578e7b767ffe7126f029c184d727a3e95b3 (diff) | |
parent | 2297a4e20beafadd3338ce4e08d166937dbed21d (diff) | |
download | rust-hoedown-d01eba91d23cea88c34ca64ece5b0995167e2c48.tar.gz |
Merge pull request #159 from uranusjr/table-fix
Fix rendering in table with empty cells
-rw-r--r-- | src/document.c | 10 | ||||
-rw-r--r-- | test/Tests/Table.html | 66 | ||||
-rw-r--r-- | test/Tests/Table.text | 21 | ||||
-rw-r--r-- | test/config.json | 5 |
4 files changed, 101 insertions, 1 deletions
diff --git a/src/document.c b/src/document.c index 27c17b2..99596e9 100644 --- a/src/document.c +++ b/src/document.c @@ -2225,7 +2225,15 @@ parse_table_row( cell_start = i; len = find_emph_char(data + i, size - i, '|'); - i += len ? len : size - i; + + /* Two possibilities for len == 0: + 1) No more pipe char found in the current line. + 2) The next pipe is right after the current one, i.e. empty cell. + For case 1, we skip to the end of line; for case 2 we just continue. + */ + if (len == 0 && data[i] != '|') + len = size - i; + i += len; cell_end = i - 1; diff --git a/test/Tests/Table.html b/test/Tests/Table.html new file mode 100644 index 0000000..f434598 --- /dev/null +++ b/test/Tests/Table.html @@ -0,0 +1,66 @@ +<h1>Standard table</h1> + +<table> + <thead> + <tr> + <th>headline1</th> + <th>headline2</th> + </tr> + </thead> + <tbody> + <tr> + <td>123</td> + <td></td> + </tr> + </tbody> +</table> + + +<h1>Cell alignment</h1> + +<table> + <thead> + <tr> + <th style="text-align: left">headline1</th> + <th style="text-align: center">headline2</th> + <th style="text-align: right">headline3</th> + </tr> + </thead> + <tbody> + <tr> + <td style="text-align: left">123</td> + <td style="text-align: center"></td> + <td style="text-align: right"></td> + </tr> + </tbody> +</table> + + +<h1>Malformed table: missing cell at row in body</h1> + +<table> + <thead> + <tr> + <th>headline1</th> + <th>headline2</th> + <th>headline3</th> + </tr> + </thead> + <tbody> + <tr> + <td>12</td> + <td></td> + <td></td> + </tr> + <tr> + <td>34</td> + <td></td> + <td></td> + </tr> + <tr> + <td>56</td> + <td></td> + <td></td> + </tr> + </tbody> +</table> diff --git a/test/Tests/Table.text b/test/Tests/Table.text new file mode 100644 index 0000000..37df539 --- /dev/null +++ b/test/Tests/Table.text @@ -0,0 +1,21 @@ +# Standard table + +|headline1|headline2| +|---------|---------| +|123 | | + + +# Cell alignment + +|headline1|headline2|headline3| +|:-------|:------:|------:| +|123||| + + +# Malformed table: missing cell at row in body + +|headline1|headline2|headline3| +|-------|-------|-------| +|12 +|34|| +|56| diff --git a/test/config.json b/test/config.json index d3e170e..365c7bc 100644 --- a/test/config.json +++ b/test/config.json @@ -106,6 +106,11 @@ "input": "Tests/Underline.text", "output": "Tests/Underline.html", "flags": ["--underline"] + }, + { + "input": "Tests/Table.text", + "output": "Tests/Table.html", + "flags": ["--tables"] } ] } |