git.iko.soy/typeable/pandoc
on master help sign in
SelfContained: handle src in embed, audio, source, input tags.
40f0a6dJohn MacFarlane
src/Text/Pandoc/SelfContained.hs+4−9
@@ -49,20 +49,15 @@ isOk :: Char -> Bool
49isOk c = isAscii c && isAlphaNum c
49isOk c = isAscii c && isAlphaNum c
50
50
51convertTag :: Maybe FilePath -> Tag String -> IO (Tag String)
51convertTag :: Maybe FilePath -> Tag String -> IO (Tag String)
52−convertTag userdata t@(TagOpen "img" as) =
52+convertTag userdata t@(TagOpen tagname as)
53+ | tagname `elem` ["img", "embed", "video", "input", "audio", "source"] =
53 case fromAttrib "src" t of
54 case fromAttrib "src" t of
54 [] -> return t
55 [] -> return t
55 src -> do
56 src -> do
56 (raw, mime) <- getRaw userdata (fromAttrib "type" t) src
57 (raw, mime) <- getRaw userdata (fromAttrib "type" t) src
57 let enc = "data:" ++ mime ++ ";base64," ++ toString (encode raw)
58 let enc = "data:" ++ mime ++ ";base64," ++ toString (encode raw)
58− return $ TagOpen "img" (("src",enc) : [(x,y) | (x,y) <- as, x /= "src"])
59+ return $ TagOpen tagname
59−convertTag userdata t@(TagOpen "video" as) =
60− case fromAttrib "src" t of
61− [] -> return t
62− src -> do
63− (raw, mime) <- getRaw userdata (fromAttrib "type" t) src
64− let enc = "data:" ++ mime ++ ";base64," ++ toString (encode raw)
65− return $ TagOpen "video" (("src",enc) : [(x,y) | (x,y) <- as, x /= "src"])
60+ (("src",enc) : [(x,y) | (x,y) <- as, x /= "src"])
66convertTag userdata t@(TagOpen "script" as) =
61convertTag userdata t@(TagOpen "script" as) =
67 case fromAttrib "src" t of
62 case fromAttrib "src" t of
68 [] -> return t
63 [] -> return t