git.iko.soy/typeable/pandoc
on master help sign in
Jira reader: retain image attributes

Jira images attributes as in `!image.jpg|align=right!` are retained as key-value pairs. Thumbnail images, such as `!example.gif|thumbnail!`, are marked by a `thumbnail` class in their attributes. Related to #6234.

commit69a3fa57087f54df6fe24c447cfbad8563befd36 authorAlbert Krewinkel <albert@zeitkraut.de> dateMon 30 Mar 2020, 22:03 (7 years ago) parent0069773
2 files changed+22−1
src/Text/Pandoc/Readers/Jira.hs+13−1 test/Tests/Readers/Jira.hs+9
src/Text/Pandoc/Readers/Jira.hs+13−1
@@ -123,7 +123,8 @@ jiraToPandocInlines = \case
123123 fromInlines ils
124124 Jira.Emoji icon -> str . iconUnicode $ icon
125125 Jira.Entity entity -> str . fromEntity $ entity
126− Jira.Image _ url -> image (Jira.fromURL url) "" mempty
126+ Jira.Image params url -> let (title, attr) = imgParams params
127+ in imageWith attr (Jira.fromURL url) title mempty
127128 Jira.Link alias url -> link (Jira.fromURL url) "" (fromInlines alias)
128129 Jira.Linebreak -> linebreak
129130 Jira.Monospaced inlns -> code . stringify . toList . fromInlines $ inlns
@@ -145,6 +146,17 @@ jiraToPandocInlines = \case
145146 Jira.Subscript -> subscript
146147 Jira.Superscript -> superscript
147148
149+ imgParams :: [Jira.Parameter] -> (Text, Attr)
150+ imgParams = foldr addImgParam ("", ("", [], []))
151+
152+ addImgParam :: Jira.Parameter -> (Text, Attr) -> (Text, Attr)
153+ addImgParam p (title, attr@(ident, classes, kvs)) =
154+ case Jira.parameterKey p of
155+ "title" -> (Jira.parameterValue p, attr)
156+ "thumbnail" -> (title, (ident, "thumbnail":classes, kvs))
157+ _ -> let kv = (Jira.parameterKey p, Jira.parameterValue p)
158+ in (title, (ident, classes, kv:kvs))
159+
148160-- | Get unicode representation of a Jira icon.
149161iconUnicode :: Jira.Icon -> Text
150162iconUnicode = \case
test/Tests/Readers/Jira.hs+9
@@ -117,6 +117,15 @@ tests =
117117 "!https://example.com/image.jpg!" =?>
118118 para (image "https://example.com/image.jpg" "" mempty)
119119
120+ , "thumbnail image" =:
121+ "!image.jpg|thumbnail!" =?>
122+ para (imageWith ("", ["thumbnail"], []) "image.jpg" "" mempty)
123+
124+ , "image with attributes" =:
125+ "!image.gif|align=right, vspace=4, title=Hello!" =?>
126+ let attr = ("", [], [("align", "right"), ("vspace", "4")])
127+ in para $ imageWith attr "image.gif" "Hello" mempty
128+
120129 , "HTML entity" =:
121130 "me &amp; you" =?> para "me & you"
122131