aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Text/Pandoc/Readers/Muse.hs11
-rw-r--r--test/Tests/Readers/Muse.hs6
2 files changed, 13 insertions, 4 deletions
diff --git a/src/Text/Pandoc/Readers/Muse.hs b/src/Text/Pandoc/Readers/Muse.hs
index 6acc88b3d..5d417e717 100644
--- a/src/Text/Pandoc/Readers/Muse.hs
+++ b/src/Text/Pandoc/Readers/Muse.hs
@@ -147,6 +147,9 @@ lchop s = s
rchop :: String -> String
rchop = reverse . lchop . reverse
+unindent :: String -> String
+unindent = rchop . intercalate "\n" . dropSpacePrefix . splitOn "\n" . lchop
+
dropSpacePrefix :: [String] -> [String]
dropSpacePrefix lns =
map (drop maxIndent) lns
@@ -380,15 +383,15 @@ amuseHeadingUntil end = try $ do
example :: PandocMonad m => MuseParser m (F Blocks)
example = try $ pure . B.codeBlock
<$ string "{{{"
- <* optional blankline
- <*> manyTill anyChar (try (optional blankline *> string "}}}"))
+ <* many spaceChar
+ <*> (unindent <$> manyTill anyChar (string "}}}"))
-- | Parse an @\<example>@ tag.
exampleTag :: PandocMonad m => MuseParser m (F Blocks)
exampleTag = try $ fmap pure $ B.codeBlockWith
<$ many spaceChar
<*> (htmlAttrToPandoc <$> openTag "example")
- <*> (rchop . intercalate "\n" . dropSpacePrefix . splitOn "\n" . lchop <$> manyTill anyChar (closeTag "example"))
+ <*> (unindent <$> manyTill anyChar (closeTag "example"))
<* manyTill spaceChar eol
-- | Parse a @\<literal>@ tag as a raw block.
@@ -398,7 +401,7 @@ literalTag = try $ fmap pure $ B.rawBlock
<$ many spaceChar
<*> (fromMaybe "html" . lookup "style" <$> openTag "literal") -- FIXME: Emacs Muse inserts <literal> without style into all output formats, but we assume HTML
<* manyTill spaceChar eol
- <*> (rchop . intercalate "\n" . dropSpacePrefix . splitOn "\n" . lchop <$> manyTill anyChar (closeTag "literal"))
+ <*> (unindent <$> manyTill anyChar (closeTag "literal"))
<* manyTill spaceChar eol
-- | Parse @\<center>@ tag.
diff --git a/test/Tests/Readers/Muse.hs b/test/Tests/Readers/Muse.hs
index bd63236bd..cda486daa 100644
--- a/test/Tests/Readers/Muse.hs
+++ b/test/Tests/Readers/Muse.hs
@@ -459,6 +459,12 @@ tests =
, "}}}"
] =?>
codeBlock "Example line\n"
+ , "Indented braces" =:
+ T.unlines [ " - {{{"
+ , " Example line"
+ , " }}}"
+ ] =?>
+ bulletList [ codeBlock "Example line" ]
-- Amusewiki requires braces to be on separate line,
-- this is an extension.
, "One line" =: