diff options
author | Alexander <ilabdsf@gmail.com> | 2017-08-09 00:05:49 +0300 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2017-08-08 14:05:49 -0700 |
commit | b50de96502b3edb27bd06887c0af011fdc76c2c2 (patch) | |
tree | 116fa7a76fbe8ba2ab83fb4aec62346278f27a67 /src/Text | |
parent | a1cd7c3bfd973aca2b7a8f22a2c7f7fae7dc707b (diff) | |
download | pandoc-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.hs | 24 |
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 |