git.iko.soy/typeable/pandoc
on master help sign in
HTML writer: ensure we don't get two style attributes for width & height.
2e26046John MacFarlane
src/Text/Pandoc/Writers/HTML.hs+8−2
@@ -47,7 +47,7 @@ import Control.Monad.State.Strict
47import Data.Char (ord, toLower)
47import Data.Char (ord, toLower)
48import Data.Text (Text)
48import Data.Text (Text)
49import qualified Data.Text.Lazy as TL
49import qualified Data.Text.Lazy as TL
50−import Data.List (intersperse, isPrefixOf)
50+import Data.List (intersperse, isPrefixOf, partition, intercalate)
51import Data.Maybe (catMaybes, fromMaybe, isJust, isNothing)
51import Data.Maybe (catMaybes, fromMaybe, isJust, isNothing)
52import Data.Monoid ((<>))
52import Data.Monoid ((<>))
53import qualified Data.Set as Set
53import qualified Data.Set as Set
@@ -569,8 +569,14 @@ imgAttrsToHtml opts attr = do
569 isNotDim _ = True
569 isNotDim _ = True
570
570
571dimensionsToAttrList :: Attr -> [(String, String)]
571dimensionsToAttrList :: Attr -> [(String, String)]
572−dimensionsToAttrList attr = (go Width) ++ (go Height)
572+dimensionsToAttrList attr = consolidateStyles $ go Width ++ go Height
573 where
573 where
574+ consolidateStyles xs =
575+ case partition isStyle xs of
576+ ([], _) -> xs
577+ (ss, rest) -> ("style", intercalate ";" $ map snd ss) : rest
578+ isStyle ("style", _) = True
579+ isStyle _ = False
574 go dir = case (dimension dir attr) of
580 go dir = case (dimension dir attr) of
575 (Just (Pixel a)) -> [(show dir, show a)]
581 (Just (Pixel a)) -> [(show dir, show a)]
576 (Just x) -> [("style", show dir ++ ":" ++ show x)]
582 (Just x) -> [("style", show dir ++ ":" ++ show x)]