From fdbf52b1cca7d923924ef5d970d946ba6369d6c5 Mon Sep 17 00:00:00 2001 From: Clare Macrae Date: Sun, 29 Jun 2014 21:15:17 +0100 Subject: Updated DokuWiki code and tests to work with latest code from jgm. The new code was got from inspecting changes in MediaWiki.hs This slightly changes the output of Div blocks, but I'm not convinced the original behaviour was really correct anyway. The code for handling Span does nothing for now, until I can work out the desired behaviour, and add tests for it. --- src/Text/Pandoc/Writers/DokuWiki.hs | 28 ++++++++++++++++++++++------ tests/writer.dokuwiki | 12 +++--------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/Text/Pandoc/Writers/DokuWiki.hs b/src/Text/Pandoc/Writers/DokuWiki.hs index 41e4d7a8f..59c883b55 100644 --- a/src/Text/Pandoc/Writers/DokuWiki.hs +++ b/src/Text/Pandoc/Writers/DokuWiki.hs @@ -31,6 +31,7 @@ DokuWiki: -} {- + [ ] Correct handling of Span [ ] Don't generate
... [ ] Don't generate lists using
    and
      [ ] Don't generate
      @@ -46,6 +47,7 @@ import Text.Pandoc.Definition import Text.Pandoc.Options import Text.Pandoc.Shared import Text.Pandoc.Writers.Shared +import Text.Pandoc.Pretty (render) import Text.Pandoc.Templates (renderTemplate') import Data.List ( intersect, intercalate ) import Network.URI ( isURI ) @@ -95,6 +97,11 @@ blockToDokuWiki :: WriterOptions -- ^ Options blockToDokuWiki _ Null = return "" +blockToDokuWiki opts (Div attrs bs) = do + contents <- blockListToDokuWiki opts bs + return $ render Nothing (tagWithAttrs "div" attrs) ++ "\n" ++ + contents ++ "\n" ++ "
      " + blockToDokuWiki opts (Plain inlines) = inlineListToDokuWiki opts inlines @@ -117,9 +124,10 @@ blockToDokuWiki opts (Para inlines) = do then "

      " ++ contents ++ "

      " else contents ++ if null indent then "\n" else "" -blockToDokuWiki _ (RawBlock "mediawiki" str) = return str -blockToDokuWiki _ (RawBlock "html" str) = return str -blockToDokuWiki _ (RawBlock _ _) = return "" +blockToDokuWiki _ (RawBlock f str) + | f == Format "mediawiki" = return str + | f == Format "html" = return str + | otherwise = return "" blockToDokuWiki _ HorizontalRule = return "\n----\n" @@ -370,6 +378,13 @@ inlineListToDokuWiki opts lst = mapM (inlineToDokuWiki opts) lst >>= return . co -- | Convert Pandoc inline element to DokuWiki. inlineToDokuWiki :: WriterOptions -> Inline -> State WriterState String +inlineToDokuWiki opts (Span attrs ils) = do + return "" + {- + contents <- inlineListToDokuWiki opts ils + return $ render Nothing (tagWithAttrs "span" attrs) ++ contents ++ "" + -} + inlineToDokuWiki opts (Emph lst) = do contents <- inlineListToDokuWiki opts lst return $ "//" ++ contents ++ "//" @@ -419,9 +434,10 @@ inlineToDokuWiki _ (Str str) = return $ escapeString str inlineToDokuWiki _ (Math _ str) = return $ "" ++ str ++ "" -- note: str should NOT be escaped -inlineToDokuWiki _ (RawInline "mediawiki" str) = return str -inlineToDokuWiki _ (RawInline "html" str) = return str -inlineToDokuWiki _ (RawInline _ _) = return "" +inlineToDokuWiki _ (RawInline f str) + | f == Format "mediawiki" = return str + | f == Format "html" = return str + | otherwise = return "" inlineToDokuWiki _ (LineBreak) = return "\\\\ " diff --git a/tests/writer.dokuwiki b/tests/writer.dokuwiki index 132c2d614..b60e57f07 100644 --- a/tests/writer.dokuwiki +++ b/tests/writer.dokuwiki @@ -277,7 +277,6 @@ Simple block on one line:
      foo
      - And nested without indentation:
      @@ -290,7 +289,6 @@ foo bar
      - Interpreted markdown in a table: @@ -309,10 +307,8 @@ And this is **strong** Here’s a simple block:
      - foo
      - This should be a code block, though:
      @@ -324,14 +320,12 @@ As should this: Now, nested:
      -
      -
      - +
      +
      foo
      -
      - +
      This should just be an HTML comment: -- cgit v1.2.3