From 7eded47bcdd10d1e32125121c7b84f952b1a326e Mon Sep 17 00:00:00 2001 From: Clare Macrae Date: Sun, 14 Jul 2013 13:40:27 +0100 Subject: Initial work to create dokuwiki writer (#386) In this first version, all dokuwiki files are straight copies of the media wiki counterparts. --- tests/tables.dokuwiki | 212 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 212 insertions(+) create mode 100644 tests/tables.dokuwiki (limited to 'tests/tables.dokuwiki') diff --git a/tests/tables.dokuwiki b/tests/tables.dokuwiki new file mode 100644 index 000000000..4836ecd79 --- /dev/null +++ b/tests/tables.dokuwiki @@ -0,0 +1,212 @@ +Simple table with caption: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Demonstration of simple table syntax.
RightLeftCenterDefault
12121212
123123123123
1111
+ +Simple table without caption: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RightLeftCenterDefault
12121212
123123123123
1111
+ +Simple table indented two spaces: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Demonstration of simple table syntax.
RightLeftCenterDefault
12121212
123123123123
1111
+ +Multiline table with caption: + + + +++++ + + + + + + + + + + + + + + + + + + + + + +
Here's the caption. It may span multiple lines.
Centered HeaderLeft AlignedRight AlignedDefault aligned
Firstrow12.0Example of a row that spans multiple lines.
Secondrow5.0Here's another one. Note the blank line between rows.
+ +Multiline table without caption: + + +++++ + + + + + + + + + + + + + + + + + + + + + +
Centered HeaderLeft AlignedRight AlignedDefault aligned
Firstrow12.0Example of a row that spans multiple lines.
Secondrow5.0Here's another one. Note the blank line between rows.
+ +Table without column headers: + + + + + + + + + + + + + + + + + + + + + + +
12121212
123123123123
1111
+ +Multiline table without column headers: + + +++++ + + + + + + + + + + + + + +
Firstrow12.0Example of a row that spans multiple lines.
Secondrow5.0Here's another one. Note the blank line between rows.
+ -- cgit v1.2.3 From 48645a47555dd5c243f5d28f9c8274b368917856 Mon Sep 17 00:00:00 2001 From: claremacrae Date: Sun, 11 Aug 2013 22:22:07 +0100 Subject: Initial implementation of tables in dokuwiki writer (#386) Todo: alignment, and headings --- src/Text/Pandoc/Writers/DokuWiki.hs | 39 +++---- tests/tables.dokuwiki | 217 +++++------------------------------- 2 files changed, 43 insertions(+), 213 deletions(-) (limited to 'tests/tables.dokuwiki') diff --git a/src/Text/Pandoc/Writers/DokuWiki.hs b/src/Text/Pandoc/Writers/DokuWiki.hs index db02bde89..87145d723 100644 --- a/src/Text/Pandoc/Writers/DokuWiki.hs +++ b/src/Text/Pandoc/Writers/DokuWiki.hs @@ -150,26 +150,21 @@ blockToDokuWiki opts (BlockQuote blocks) = do contents <- blockListToDokuWiki opts blocks return $ "
" ++ contents ++ "
" -blockToDokuWiki opts (Table capt aligns widths headers rows') = do +blockToDokuWiki opts (Table capt aligns _ headers rows') = do let alignStrings = map alignmentToString aligns captionDoc <- if null capt then return "" else do c <- inlineListToDokuWiki opts capt - return $ "" ++ c ++ "\n" - let percent w = show (truncate (100*w) :: Integer) ++ "%" - let coltags = if all (== 0.0) widths - then "" - else unlines $ map - (\w -> "") widths + return $ "" ++ c ++ "\n" head' <- if all null headers then return "" else do hs <- tableRowToDokuWiki opts alignStrings 0 headers - return $ "\n" ++ hs ++ "\n\n" + return $ hs ++ "\n" body' <- zipWithM (tableRowToDokuWiki opts alignStrings) [1..] rows' - return $ "\n" ++ captionDoc ++ coltags ++ head' ++ - "\n" ++ unlines body' ++ "\n
\n" + return $ captionDoc ++ head' ++ + unlines body' blockToDokuWiki opts x@(BulletList items) = do oldUseTags <- get >>= return . stUseTags @@ -325,34 +320,34 @@ tableRowToDokuWiki :: WriterOptions -> [[Block]] -> State WriterState String tableRowToDokuWiki opts alignStrings rownum cols' = do - let celltype = if rownum == 0 then "th" else "td" - let rowclass = case rownum of - 0 -> "header" - x | x `rem` 2 == 1 -> "odd" - _ -> "even" + let celltype = if rownum == 0 then "" else "" cols'' <- sequence $ zipWith (\alignment item -> tableItemToDokuWiki opts celltype alignment item) alignStrings cols' - return $ "\n" ++ unlines cols'' ++ "" + return $ "| " ++ "" ++ joinColumns cols'' ++ " |" alignmentToString :: Alignment -> [Char] alignmentToString alignment = case alignment of - AlignLeft -> "left" - AlignRight -> "right" - AlignCenter -> "center" - AlignDefault -> "left" + AlignLeft -> "" + AlignRight -> "" + AlignCenter -> "" + AlignDefault -> "" tableItemToDokuWiki :: WriterOptions -> String -> String -> [Block] -> State WriterState String +-- TODO Fix celltype and align' defined but not used tableItemToDokuWiki opts celltype align' item = do - let mkcell x = "<" ++ celltype ++ " align=\"" ++ align' ++ "\">" ++ - x ++ "" + let mkcell x = "" ++ x ++ "" contents <- blockListToDokuWiki opts item return $ mkcell contents +-- | Concatenates columns together. +joinColumns :: [String] -> String +joinColumns = intercalate " | " + -- | Convert list of Pandoc block elements to DokuWiki. blockListToDokuWiki :: WriterOptions -- ^ Options -> [Block] -- ^ List of block elements diff --git a/tests/tables.dokuwiki b/tests/tables.dokuwiki index 4836ecd79..0a1b0a4ff 100644 --- a/tests/tables.dokuwiki +++ b/tests/tables.dokuwiki @@ -1,212 +1,47 @@ Simple table with caption: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Demonstration of simple table syntax.
RightLeftCenterDefault
12121212
123123123123
1111
+Demonstration of simple table syntax. +| Right | Left | Center | Default | +| 12 | 12 | 12 | 12 | +| 123 | 123 | 123 | 123 | +| 1 | 1 | 1 | 1 | Simple table without caption: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RightLeftCenterDefault
12121212
123123123123
1111
+| Right | Left | Center | Default | +| 12 | 12 | 12 | 12 | +| 123 | 123 | 123 | 123 | +| 1 | 1 | 1 | 1 | Simple table indented two spaces: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Demonstration of simple table syntax.
RightLeftCenterDefault
12121212
123123123123
1111
+Demonstration of simple table syntax. +| Right | Left | Center | Default | +| 12 | 12 | 12 | 12 | +| 123 | 123 | 123 | 123 | +| 1 | 1 | 1 | 1 | Multiline table with caption: - - ----- - - - - - - - - - - - - - - - - - - - - - -
Here's the caption. It may span multiple lines.
Centered HeaderLeft AlignedRight AlignedDefault aligned
Firstrow12.0Example of a row that spans multiple lines.
Secondrow5.0Here's another one. Note the blank line between rows.
+Here's the caption. It may span multiple lines. +| Centered Header | Left Aligned | Right Aligned | Default aligned | +| First | row | 12.0 | Example of a row that spans multiple lines. | +| Second | row | 5.0 | Here's another one. Note the blank line between rows. | Multiline table without caption: - ----- - - - - - - - - - - - - - - - - - - - - - -
Centered HeaderLeft AlignedRight AlignedDefault aligned
Firstrow12.0Example of a row that spans multiple lines.
Secondrow5.0Here's another one. Note the blank line between rows.
+| Centered Header | Left Aligned | Right Aligned | Default aligned | +| First | row | 12.0 | Example of a row that spans multiple lines. | +| Second | row | 5.0 | Here's another one. Note the blank line between rows. | Table without column headers: - - - - - - - - - - - - - - - - - - - - - -
12121212
123123123123
1111
+| 12 | 12 | 12 | 12 | +| 123 | 123 | 123 | 123 | +| 1 | 1 | 1 | 1 | Multiline table without column headers: - ----- - - - - - - - - - - - - - -
Firstrow12.0Example of a row that spans multiple lines.
Secondrow5.0Here's another one. Note the blank line between rows.
+| First | row | 12.0 | Example of a row that spans multiple lines. | +| Second | row | 5.0 | Here's another one. Note the blank line between rows. | -- cgit v1.2.3 From eb4fe5e82c65b5dc2f5689e4b1bceff0179397b5 Mon Sep 17 00:00:00 2001 From: claremacrae Date: Sat, 17 Aug 2013 08:48:29 +0100 Subject: Implement table headings in dokuwiki writer (#386) --- src/Text/Pandoc/Writers/DokuWiki.hs | 21 +++++++++++++++++++-- tests/tables.dokuwiki | 10 +++++----- 2 files changed, 24 insertions(+), 7 deletions(-) (limited to 'tests/tables.dokuwiki') diff --git a/src/Text/Pandoc/Writers/DokuWiki.hs b/src/Text/Pandoc/Writers/DokuWiki.hs index 87145d723..76fe2fa36 100644 --- a/src/Text/Pandoc/Writers/DokuWiki.hs +++ b/src/Text/Pandoc/Writers/DokuWiki.hs @@ -36,7 +36,7 @@ DokuWiki: [ ] Implement definition lists [ ] Don't generate lists using
    and
      [ ] Don't generate
      - [ ] Implement conversion of tables + [ ] Implement alignment of text in tables [ ] Implement comments [ ] Work through the Dokuwiki spec, and check I've not missed anything out [ ] Test the output in Dokuwiki - and compare against the display of another format, e.g. HTML @@ -160,7 +160,7 @@ blockToDokuWiki opts (Table capt aligns _ headers rows') = do head' <- if all null headers then return "" else do - hs <- tableRowToDokuWiki opts alignStrings 0 headers + hs <- tableHeaderToDokuWiki opts alignStrings 0 headers return $ hs ++ "\n" body' <- zipWithM (tableRowToDokuWiki opts alignStrings) [1..] rows' return $ captionDoc ++ head' ++ @@ -314,6 +314,19 @@ vcat = intercalate "\n" -- Auxiliary functions for tables: +-- TODO Eliminate copy-and-pasted code in tableHeaderToDokuWiki and tableRowToDokuWiki +tableHeaderToDokuWiki :: WriterOptions + -> [String] + -> Int + -> [[Block]] + -> State WriterState String +tableHeaderToDokuWiki opts alignStrings rownum cols' = do + let celltype = if rownum == 0 then "" else "" + cols'' <- sequence $ zipWith + (\alignment item -> tableItemToDokuWiki opts celltype alignment item) + alignStrings cols' + return $ "^ " ++ "" ++ joinHeaders cols'' ++ " ^" + tableRowToDokuWiki :: WriterOptions -> [String] -> Int @@ -348,6 +361,10 @@ tableItemToDokuWiki opts celltype align' item = do joinColumns :: [String] -> String joinColumns = intercalate " | " +-- | Concatenates headers together. +joinHeaders :: [String] -> String +joinHeaders = intercalate " ^ " + -- | Convert list of Pandoc block elements to DokuWiki. blockListToDokuWiki :: WriterOptions -- ^ Options -> [Block] -- ^ List of block elements diff --git a/tests/tables.dokuwiki b/tests/tables.dokuwiki index 0a1b0a4ff..4fcae4e6f 100644 --- a/tests/tables.dokuwiki +++ b/tests/tables.dokuwiki @@ -1,14 +1,14 @@ Simple table with caption: Demonstration of simple table syntax. -| Right | Left | Center | Default | +^ Right ^ Left ^ Center ^ Default ^ | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | Simple table without caption: -| Right | Left | Center | Default | +^ Right ^ Left ^ Center ^ Default ^ | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | @@ -16,7 +16,7 @@ Simple table without caption: Simple table indented two spaces: Demonstration of simple table syntax. -| Right | Left | Center | Default | +^ Right ^ Left ^ Center ^ Default ^ | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | @@ -24,13 +24,13 @@ Demonstration of simple table syntax. Multiline table with caption: Here's the caption. It may span multiple lines. -| Centered Header | Left Aligned | Right Aligned | Default aligned | +^ Centered Header ^ Left Aligned ^ Right Aligned ^ Default aligned ^ | First | row | 12.0 | Example of a row that spans multiple lines. | | Second | row | 5.0 | Here's another one. Note the blank line between rows. | Multiline table without caption: -| Centered Header | Left Aligned | Right Aligned | Default aligned | +^ Centered Header ^ Left Aligned ^ Right Aligned ^ Default aligned ^ | First | row | 12.0 | Example of a row that spans multiple lines. | | Second | row | 5.0 | Here's another one. Note the blank line between rows. | -- cgit v1.2.3 From 23d71b13e7b462229427e2437a8dd9c8f72d72f1 Mon Sep 17 00:00:00 2001 From: Clare Macrae Date: Wed, 2 Jul 2014 22:10:20 +0100 Subject: DokuWiki writer: Whitespace to a testsuite output file. This doesn't change the testsuite behaviour, but it does mean that all the testsuite output files are exactly identical to the output obtained by running the current pandoc. --- tests/tables.dokuwiki | 1 - 1 file changed, 1 deletion(-) (limited to 'tests/tables.dokuwiki') diff --git a/tests/tables.dokuwiki b/tests/tables.dokuwiki index 4fcae4e6f..eb2a07dcb 100644 --- a/tests/tables.dokuwiki +++ b/tests/tables.dokuwiki @@ -44,4 +44,3 @@ Multiline table without column headers: | First | row | 12.0 | Example of a row that spans multiple lines. | | Second | row | 5.0 | Here's another one. Note the blank line between rows. | - -- cgit v1.2.3 From 5e25bff392c9504752c0ce5752d6e7f364c35b46 Mon Sep 17 00:00:00 2001 From: Clare Macrae Date: Wed, 2 Jul 2014 22:48:04 +0100 Subject: Revert "DokuWiki writer: Whitespace to a testsuite output file." This reverts commit 23d71b13e7b462229427e2437a8dd9c8f72d72f1. This is now resulting in a testsuite failure, and I can't see why it didn't do so before --- tests/tables.dokuwiki | 1 + 1 file changed, 1 insertion(+) (limited to 'tests/tables.dokuwiki') diff --git a/tests/tables.dokuwiki b/tests/tables.dokuwiki index eb2a07dcb..4fcae4e6f 100644 --- a/tests/tables.dokuwiki +++ b/tests/tables.dokuwiki @@ -44,3 +44,4 @@ Multiline table without column headers: | First | row | 12.0 | Example of a row that spans multiple lines. | | Second | row | 5.0 | Here's another one. Note the blank line between rows. | + -- cgit v1.2.3