git.iko.soy/typeable/pandoc
on master help sign in
Jira reader: retain image attributes
69a3fa5Albert Krewinkel
src/Text/Pandoc/Readers/Jira.hs+13−1
@@ -123,7 +123,8 @@ jiraToPandocInlines = \case
123 fromInlines ils
123 fromInlines ils
124 Jira.Emoji icon -> str . iconUnicode $ icon
124 Jira.Emoji icon -> str . iconUnicode $ icon
125 Jira.Entity entity -> str . fromEntity $ entity
125 Jira.Entity entity -> str . fromEntity $ entity
126+ Jira.Image params url -> let (title, attr) = imgParams params
126− Jira.Image _ url -> image (Jira.fromURL url) "" mempty
127+ in imageWith attr (Jira.fromURL url) title mempty
127 Jira.Link alias url -> link (Jira.fromURL url) "" (fromInlines alias)
128 Jira.Link alias url -> link (Jira.fromURL url) "" (fromInlines alias)
128 Jira.Linebreak -> linebreak
129 Jira.Linebreak -> linebreak
129 Jira.Monospaced inlns -> code . stringify . toList . fromInlines $ inlns
130 Jira.Monospaced inlns -> code . stringify . toList . fromInlines $ inlns
@@ -145,6 +146,17 @@ jiraToPandocInlines = \case
145 Jira.Subscript -> subscript
146 Jira.Subscript -> subscript
146 Jira.Superscript -> superscript
147 Jira.Superscript -> superscript
147
148
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+
148-- | Get unicode representation of a Jira icon.
160-- | Get unicode representation of a Jira icon.
149iconUnicode :: Jira.Icon -> Text
161iconUnicode :: Jira.Icon -> Text
150iconUnicode = \case
162iconUnicode = \case
test/Tests/Readers/Jira.hs+9
@@ -117,6 +117,15 @@ tests =
117 "!https://example.com/image.jpg!" =?>
117 "!https://example.com/image.jpg!" =?>
118 para (image "https://example.com/image.jpg" "" mempty)
118 para (image "https://example.com/image.jpg" "" mempty)
119
119
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+
120 , "HTML entity" =:
129 , "HTML entity" =:
121 "me & you" =?> para "me & you"
130 "me & you" =?> para "me & you"
122
131