From 6f335b9bb792a8d1133676b60518efdd84cf3886 Mon Sep 17 00:00:00 2001 From: defanor Date: Thu, 23 Nov 2017 13:49:07 +0300 Subject: Use default pandoc extensions Identifiers get handled better with those. And since they also add divs, rendering of lists of blocks is slightly improved to avoid unnecessary spacing. --- Pancake/Reading.hs | 8 ++++---- Pancake/Rendering.hs | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) (limited to 'Pancake') diff --git a/Pancake/Reading.hs b/Pancake/Reading.hs index d54d7b3..686e3cf 100644 --- a/Pancake/Reading.hs +++ b/Pancake/Reading.hs @@ -121,7 +121,7 @@ readDoc :: BS.ByteString -- ^ A parsed document. readDoc out dt uri = do term <- setupTermFromEnv - let reader = either (const plain) id $ + let (reader, exts) = either (const plain) id $ maybe (Left "no type suggestions") (byExtension . ('.':)) dt <|> case (uriScheme uri, map toLower $ takeExtension $ uriPath uri) of -- some exceptions and special cases (might be better to make @@ -141,14 +141,14 @@ readDoc out dt uri = do _ -> byExtension ext <|> gopher (_, ext) -> byExtension ext cols = fromMaybe 80 $ getCapability term termColumns - opts = def { P.readerColumns = cols } + opts = def { P.readerColumns = cols, P.readerExtensions = exts } case reader of - (P.TextReader f, _) -> case decodeUtf8' out of + P.TextReader f -> case decodeUtf8' out of Left err -> do putErrLn $ show err P.runIO $ f opts $ decodeLatin1 out Right r -> P.runIO $ f opts r - (P.ByteStringReader f, _) -> P.runIO $ f opts $ BL.fromStrict out + P.ByteStringReader f -> P.runIO $ f opts $ BL.fromStrict out where http ext = byExtension ext <|> html html = P.getReader "html" diff --git a/Pancake/Rendering.hs b/Pancake/Rendering.hs index d7742ab..04f3f57 100644 --- a/Pancake/Rendering.hs +++ b/Pancake/Rendering.hs @@ -449,13 +449,13 @@ renderBlock (P.Div attr b) = do renderBlocks b renderBlock P.Null = pure () --- | Renders a block element followed by an empy line. -renderBlockLn :: P.Block -> Renderer () -renderBlockLn b = renderBlock b >> storeLines [[]] +-- | Renders block elements with empy lines between them. +spacedBlocks :: [P.Block] -> Renderer () +spacedBlocks b = sequence_ (intersperse (storeLines [[]]) $ map renderBlock b) -- | Renders multiple block elements. renderBlocks :: [P.Block] -> Renderer () -renderBlocks b = withIndent $ mapM_ renderBlockLn b +renderBlocks b = withIndent $ spacedBlocks b -- | Renders a document. renderDoc :: Int @@ -467,4 +467,4 @@ renderDoc :: Int -> [RendererOutput] -- ^ Rendered document. renderDoc cols ds (P.Pandoc _ blocks) = - runRenderer cols 0 0 1 ds $ mapM_ renderBlockLn blocks + runRenderer cols 0 0 1 ds $ spacedBlocks blocks -- cgit v1.2.3