aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Krotov <ilabdsf@gmail.com>2017-07-12 18:16:02 +0300
committerJohn MacFarlane <jgm@berkeley.edu>2017-07-12 17:16:02 +0200
commitde117fbd9e32e890663eb831b47fd91fcd6419a0 (patch)
treecc21f58c3c01ef2e4d2cda5c11d23de983be5086
parente0025cf4f18e335917f57814a1854f85ce1b6236 (diff)
downloadpandoc-de117fbd9e32e890663eb831b47fd91fcd6419a0.tar.gz
Muse writer: indent lists inside <quote> with at least one space (#3795)
-rw-r--r--src/Text/Pandoc/Writers/Muse.hs15
-rw-r--r--test/Tests/Writers/Muse.hs11
-rw-r--r--test/writer.muse6
3 files changed, 25 insertions, 7 deletions
diff --git a/src/Text/Pandoc/Writers/Muse.hs b/src/Text/Pandoc/Writers/Muse.hs
index b386a85b9..0383d9d86 100644
--- a/src/Text/Pandoc/Writers/Muse.hs
+++ b/src/Text/Pandoc/Writers/Muse.hs
@@ -102,6 +102,13 @@ pandocToMuse (Pandoc meta blocks) = do
Nothing -> return main
Just tpl -> renderTemplate' tpl context
+-- | 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
+
-- | Convert list of Pandoc block elements to Muse.
blockListToMuse :: PandocMonad m
=> [Block] -- ^ List of block elements
@@ -111,11 +118,11 @@ blockListToMuse blocks = do
modify $ \s -> s { stTopLevel = not $ stInsideBlock s
, stInsideBlock = True
}
- contents <- mapM blockToMuse blocks
+ result <- flatBlockListToMuse blocks
modify $ \s -> s { stTopLevel = stTopLevel oldState
, stInsideBlock = stInsideBlock oldState
}
- return $ cat contents
+ return result
-- | Convert Pandoc block element to Muse.
blockToMuse :: PandocMonad m
@@ -141,10 +148,10 @@ blockToMuse (RawBlock (Format format) str) =
return $ blankline $$ "<literal style=\"" <> text format <> "\">" $$
text str $$ "</literal>" $$ blankline
blockToMuse (BlockQuote blocks) = do
- contents <- blockListToMuse blocks
+ contents <- flatBlockListToMuse blocks
return $ blankline
<> "<quote>"
- $$ flush contents -- flush to drop blanklines
+ $$ nest 0 contents -- nest 0 to remove trailing blank lines
$$ "</quote>"
<> blankline
blockToMuse (OrderedList (start, style, _) items) = do
diff --git a/test/Tests/Writers/Muse.hs b/test/Tests/Writers/Muse.hs
index d83cc5c9b..ebe5d45cd 100644
--- a/test/Tests/Writers/Muse.hs
+++ b/test/Tests/Writers/Muse.hs
@@ -137,6 +137,17 @@ tests = [ testGroup "block elements"
, " second inner definition :: second inner description"
]
]
+ -- Check that list is intended with one space even inside a quote
+ , "List inside block quote" =: blockQuote (orderedList [ plain $ text "first"
+ , plain $ text "second"
+ , plain $ text "third"
+ ])
+ =?> unlines [ "<quote>"
+ , " 1. first"
+ , " 2. second"
+ , " 3. third"
+ , "</quote>"
+ ]
]
, testGroup "headings"
[ "normal heading" =:
diff --git a/test/writer.muse b/test/writer.muse
index 41d1c9a5b..fda025812 100644
--- a/test/writer.muse
+++ b/test/writer.muse
@@ -65,8 +65,8 @@ sub status {
A list:
-1. item one
-2. item two
+ 1. item one
+ 2. item two
Nested block quotes:
@@ -281,7 +281,7 @@ Multiple blocks with italics:
</example>
<quote>
-orange block quote
+ orange block quote
</quote>
Multiple definitions, tight: