MediaWiki writer: fix spacing issues.

+ Start cell on new line unless it's a single Para or Plain.
+ For single Para or Plain, insert a space after the `|` to
  avoid problems when the text begins with a character like
  `-`.

Closes #2604, closes #2606.
This commit is contained in:
John MacFarlane 2016-01-02 12:14:12 -08:00
parent 6ed41cbdcc
commit a68e072bac
2 changed files with 97 additions and 93 deletions

View file

@ -306,7 +306,11 @@ tableCellToMediaWiki headless rownum (alignment, width, bs) = do
let attr = if null attrs let attr = if null attrs
then "" then ""
else unwords attrs ++ "|" else unwords attrs ++ "|"
return $ marker ++ attr ++ trimr contents let sep = case bs of
[Plain _] -> " "
[Para _] -> " "
_ -> "\n"
return $ marker ++ attr ++ sep ++ trimr contents
alignmentToString :: Alignment -> String alignmentToString :: Alignment -> String
alignmentToString alignment = case alignment of alignmentToString alignment = case alignment of

View file

@ -2,145 +2,145 @@ Simple table with caption:
{| {|
|+ Demonstration of simple table syntax. |+ Demonstration of simple table syntax.
!align="right"|Right !align="right"| Right
!Left ! Left
!align="center"|Center !align="center"| Center
!Default ! Default
|- |-
|align="right"|12 |align="right"| 12
|12 | 12
|align="center"|12 |align="center"| 12
|12 | 12
|- |-
|align="right"|123 |align="right"| 123
|123 | 123
|align="center"|123 |align="center"| 123
|123 | 123
|- |-
|align="right"|1 |align="right"| 1
|1 | 1
|align="center"|1 |align="center"| 1
|1 | 1
|} |}
Simple table without caption: Simple table without caption:
{| {|
!align="right"|Right !align="right"| Right
!Left ! Left
!align="center"|Center !align="center"| Center
!Default ! Default
|- |-
|align="right"|12 |align="right"| 12
|12 | 12
|align="center"|12 |align="center"| 12
|12 | 12
|- |-
|align="right"|123 |align="right"| 123
|123 | 123
|align="center"|123 |align="center"| 123
|123 | 123
|- |-
|align="right"|1 |align="right"| 1
|1 | 1
|align="center"|1 |align="center"| 1
|1 | 1
|} |}
Simple table indented two spaces: Simple table indented two spaces:
{| {|
|+ Demonstration of simple table syntax. |+ Demonstration of simple table syntax.
!align="right"|Right !align="right"| Right
!Left ! Left
!align="center"|Center !align="center"| Center
!Default ! Default
|- |-
|align="right"|12 |align="right"| 12
|12 | 12
|align="center"|12 |align="center"| 12
|12 | 12
|- |-
|align="right"|123 |align="right"| 123
|123 | 123
|align="center"|123 |align="center"| 123
|123 | 123
|- |-
|align="right"|1 |align="right"| 1
|1 | 1
|align="center"|1 |align="center"| 1
|1 | 1
|} |}
Multiline table with caption: Multiline table with caption:
{| {|
|+ Here's the caption. It may span multiple lines. |+ Here's the caption. It may span multiple lines.
!align="center" width="15%"|Centered Header !align="center" width="15%"| Centered Header
!width="13%"|Left Aligned !width="13%"| Left Aligned
!align="right" width="16%"|Right Aligned !align="right" width="16%"| Right Aligned
!width="33%"|Default aligned !width="33%"| Default aligned
|- |-
|align="center"|First |align="center"| First
|row | row
|align="right"|12.0 |align="right"| 12.0
|Example of a row that spans multiple lines. | Example of a row that spans multiple lines.
|- |-
|align="center"|Second |align="center"| Second
|row | row
|align="right"|5.0 |align="right"| 5.0
|Here's another one. Note the blank line between rows. | Here's another one. Note the blank line between rows.
|} |}
Multiline table without caption: Multiline table without caption:
{| {|
!align="center" width="15%"|Centered Header !align="center" width="15%"| Centered Header
!width="13%"|Left Aligned !width="13%"| Left Aligned
!align="right" width="16%"|Right Aligned !align="right" width="16%"| Right Aligned
!width="33%"|Default aligned !width="33%"| Default aligned
|- |-
|align="center"|First |align="center"| First
|row | row
|align="right"|12.0 |align="right"| 12.0
|Example of a row that spans multiple lines. | Example of a row that spans multiple lines.
|- |-
|align="center"|Second |align="center"| Second
|row | row
|align="right"|5.0 |align="right"| 5.0
|Here's another one. Note the blank line between rows. | Here's another one. Note the blank line between rows.
|} |}
Table without column headers: Table without column headers:
{| {|
|align="right"|12 |align="right"| 12
|12 | 12
|align="center"|12 |align="center"| 12
|align="right"|12 |align="right"| 12
|- |-
|align="right"|123 |align="right"| 123
|123 | 123
|align="center"|123 |align="center"| 123
|align="right"|123 |align="right"| 123
|- |-
|align="right"|1 |align="right"| 1
|1 | 1
|align="center"|1 |align="center"| 1
|align="right"|1 |align="right"| 1
|} |}
Multiline table without column headers: Multiline table without column headers:
{| {|
|align="center" width="15%"|First |align="center" width="15%"| First
|width="13%"|row |width="13%"| row
|align="right" width="16%"|12.0 |align="right" width="16%"| 12.0
|width="33%"|Example of a row that spans multiple lines. |width="33%"| Example of a row that spans multiple lines.
|- |-
|align="center"|Second |align="center"| Second
|row | row
|align="right"|5.0 |align="right"| 5.0
|Here's another one. Note the blank line between rows. | Here's another one. Note the blank line between rows.
|} |}