aboutsummaryrefslogtreecommitdiff
path: root/src/Text
diff options
context:
space:
mode:
authorAlexander <ilabdsf@gmail.com>2017-08-09 00:05:49 +0300
committerJohn MacFarlane <jgm@berkeley.edu>2017-08-08 14:05:49 -0700
commitb50de96502b3edb27bd06887c0af011fdc76c2c2 (patch)
tree116fa7a76fbe8ba2ab83fb4aec62346278f27a67 /src/Text
parenta1cd7c3bfd973aca2b7a8f22a2c7f7fae7dc707b (diff)
downloadpandoc-b50de96502b3edb27bd06887c0af011fdc76c2c2.tar.gz
Muse writer: insert two blanklines between lists of the same type (#3844)
Diffstat (limited to 'src/Text')
-rw-r--r--src/Text/Pandoc/Writers/Muse.hs24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Writers/Muse.hs b/src/Text/Pandoc/Writers/Muse.hs
index 0383d9d86..3a5eefc18 100644
--- a/src/Text/Pandoc/Writers/Muse.hs
+++ b/src/Text/Pandoc/Writers/Muse.hs
@@ -102,12 +102,34 @@ pandocToMuse (Pandoc meta blocks) = do
Nothing -> return main
Just tpl -> renderTemplate' tpl context
+-- | Helper function for flatBlockListToMuse
+-- | Render all blocks and insert blank lines between the first two
+catWithBlankLines :: PandocMonad m
+ => [Block] -- ^ List of block elements
+ -> Int -- ^ Number of blank lines
+ -> StateT WriterState m Doc
+catWithBlankLines (b : bs) n = do
+ b' <- blockToMuse b
+ bs' <- flatBlockListToMuse bs
+ return $ b' <> blanklines n <> bs'
+catWithBlankLines _ _ = error "Expected at least one block"
+
-- | Convert list of Pandoc block elements to Muse
-- | without setting stTopLevel.
flatBlockListToMuse :: PandocMonad m
=> [Block] -- ^ List of block elements
-> StateT WriterState m Doc
-flatBlockListToMuse blocks = cat <$> mapM blockToMuse blocks
+flatBlockListToMuse bs@(BulletList _ : BulletList _ : _) = catWithBlankLines bs 2
+flatBlockListToMuse bs@(OrderedList (_, style1, _) _ : OrderedList (_, style2, _) _ : _) =
+ catWithBlankLines bs (if style1' == style2' then 2 else 0)
+ where
+ style1' = normalizeStyle style1
+ style2' = normalizeStyle style2
+ normalizeStyle DefaultStyle = Decimal
+ normalizeStyle s = s
+flatBlockListToMuse bs@(DefinitionList _ : DefinitionList _ : _) = catWithBlankLines bs 2
+flatBlockListToMuse bs@(_ : _) = catWithBlankLines bs 0
+flatBlockListToMuse [] = return mempty
-- | Convert list of Pandoc block elements to Muse.
blockListToMuse :: PandocMonad m