From 58799234227200b480b21a8f6611bdf3b6e2528a Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Mon, 7 May 2018 14:54:20 +0300 Subject: [PATCH] Muse writer: add support for left-align and right-align classes Address issue #4542 --- src/Text/Pandoc/Writers/Muse.hs | 10 ++++++++-- test/Tests/Writers/Muse.hs | 6 ++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/Text/Pandoc/Writers/Muse.hs b/src/Text/Pandoc/Writers/Muse.hs index 6ed6ed1ca..3681fcc0d 100644 --- a/src/Text/Pandoc/Writers/Muse.hs +++ b/src/Text/Pandoc/Writers/Muse.hs @@ -511,7 +511,7 @@ inlineToMuse (Link _ txt (src, _)) = isImageUrl = (`elem` imageExtensions) . takeExtension inlineToMuse (Image attr alt (source,'f':'i':'g':':':title)) = inlineToMuse (Image attr alt (source,title)) -inlineToMuse (Image attr inlines (source, title)) = do +inlineToMuse (Image attr@(_, classes, _) inlines (source, title)) = do opts <- asks envOptions alt <- local (\env -> env { envInsideLinkDescription = True }) $ inlineListToMuse inlines let title' = if null title @@ -522,7 +522,13 @@ inlineToMuse (Image attr inlines (source, title)) = do let width = case dimension Width attr of Just (Percent x) | isEnabled Ext_amuse opts -> " " ++ show (round x :: Integer) _ -> "" - return $ "[[" <> text (urlEscapeBrackets source ++ width) <> "]" <> title' <> "]" + let leftalign = if "align-left" `elem` classes + then " l" + else "" + let rightalign = if "align-right" `elem` classes + then " r" + else "" + return $ "[[" <> text (urlEscapeBrackets source ++ width ++ leftalign ++ rightalign) <> "]" <> title' <> "]" inlineToMuse (Note contents) = do -- add to notes in state notes <- gets stNotes diff --git a/test/Tests/Writers/Muse.hs b/test/Tests/Writers/Muse.hs index ff66d1d65..50c0e78eb 100644 --- a/test/Tests/Writers/Muse.hs +++ b/test/Tests/Writers/Muse.hs @@ -425,6 +425,12 @@ tests = [ testGroup "block elements" , "image with width" =: imageWith ("", [], [("width", "60%")]) "image.png" "Image" (str "") =?> "[[image.png 60][Image]]" + , "left-aligned image with width" =: + imageWith ("", ["align-left"], [("width", "60%")]) "image.png" "Image" (str "") =?> + "[[image.png 60 l][Image]]" + , "right-aligned image with width" =: + imageWith ("", ["align-right"], [("width", "60%")]) "image.png" "Image" (str "") =?> + "[[image.png 60 r][Image]]" , "escape brackets in image title" =: image "image.png" "Foo]bar" (str "") =?> "[[image.png][Foo]bar]]" , "note" =: note (plain (text "Foo")) =?> unlines [ "[1]"