aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbert Krewinkel <albert@zeitkraut.de>2016-11-09 22:49:20 +0100
committerAlbert Krewinkel <albert@zeitkraut.de>2016-11-09 22:49:20 +0100
commit7e5220b57c5a48fabe6e43ba270db812593d3463 (patch)
treefbd2754b01503e766413b312770c39251fde8f57
parent13bc573e7f9e0602404dd37fec2c7cd14b5c56ee (diff)
downloadpandoc-7e5220b57c5a48fabe6e43ba270db812593d3463.tar.gz
Org reader: allow HTML attribs on non-figure images
Images which are the only element in a paragraph can still be given HTML attributes, even if the image does not have a caption and is hence not a figure. The following will add set the `width` attribute of the image to `50%`: #+ATTR_HTML: :width 50% [[file:image.jpg]] Closes: #3222
-rw-r--r--src/Text/Pandoc/Readers/Org/Blocks.hs14
-rw-r--r--tests/Tests/Readers/Org.hs6
2 files changed, 14 insertions, 6 deletions
diff --git a/src/Text/Pandoc/Readers/Org/Blocks.hs b/src/Text/Pandoc/Readers/Org/Blocks.hs
index d42e93d78..481684600 100644
--- a/src/Text/Pandoc/Readers/Org/Blocks.hs
+++ b/src/Text/Pandoc/Readers/Org/Blocks.hs
@@ -618,7 +618,8 @@ propertiesDrawer = try $ do
-- Figures
--
--- | Figures (Image on a line by itself, preceded by name and/or caption)
+-- | Figures or an image paragraph (i.e. an image on a line by itself). Only
+-- images with a caption attribute are interpreted as figures.
figure :: OrgParser (F Blocks)
figure = try $ do
figAttrs <- blockAttributes
@@ -626,23 +627,24 @@ figure = try $ do
case cleanLinkString src of
Nothing -> mzero
Just imgSrc -> do
- guard (not . isNothing . blockAttrCaption $ figAttrs)
guard (isImageFilename imgSrc)
- return $ figureBlock figAttrs imgSrc
+ let isFigure = not . isNothing $ blockAttrCaption figAttrs
+ return $ imageBlock isFigure figAttrs imgSrc
where
selfTarget :: OrgParser String
selfTarget = try $ char '[' *> linkTarget <* char ']'
- figureBlock :: BlockAttributes -> String -> (F Blocks)
- figureBlock figAttrs imgSrc =
+ imageBlock :: Bool -> BlockAttributes -> String -> F Blocks
+ imageBlock isFigure figAttrs imgSrc =
let
figName = fromMaybe mempty $ blockAttrName figAttrs
figLabel = fromMaybe mempty $ blockAttrLabel figAttrs
figCaption = fromMaybe mempty $ blockAttrCaption figAttrs
figKeyVals = blockAttrKeyValues figAttrs
attr = (figLabel, mempty, figKeyVals)
+ figTitle = (if isFigure then withFigPrefix else id) figName
in
- B.para . B.imageWith attr imgSrc (withFigPrefix figName) <$> figCaption
+ B.para . B.imageWith attr imgSrc figTitle <$> figCaption
withFigPrefix :: String -> String
withFigPrefix cs =
diff --git a/tests/Tests/Readers/Org.hs b/tests/Tests/Readers/Org.hs
index 1b536551c..882701644 100644
--- a/tests/Tests/Readers/Org.hs
+++ b/tests/Tests/Readers/Org.hs
@@ -196,6 +196,12 @@ tests =
"[[file:sunrise.jpg]]" =?>
(para $ image "sunrise.jpg" "" "")
+ , "Image with html attributes" =:
+ unlines [ "#+ATTR_HTML: :width 50%"
+ , "[[file:guinea-pig.gif]]"
+ ] =?>
+ (para $ imageWith ("", [], [("width", "50%")]) "guinea-pig.gif" "" "")
+
, "Explicit link" =:
"[[http://zeitlens.com/][pseudo-random /nonsense/]]" =?>
(para $ link "http://zeitlens.com/" ""