git.iko.soy/typeable/pandoc
on master help sign in
Refactored getData from getDataURI in SelfContained.
0e8b19eJohn MacFarlane
src/Text/Pandoc/SelfContained.hs+15−5
@@ -57,8 +57,8 @@ import Text.Pandoc.Logging
57isOk :: Char -> Bool
57isOk :: Char -> Bool
58isOk c = isAscii c && isAlphaNum c
58isOk c = isAscii c && isAlphaNum c
59
59
60−makeDataURI :: String -> ByteString -> String
60+makeDataURI :: (MimeType, ByteString) -> String
61−makeDataURI mime raw =
61+makeDataURI (mime, raw) =
62 if textual
62 if textual
63 then "data:" ++ mime' ++ "," ++ escapeURIString isOk (toString raw)
63 then "data:" ++ mime' ++ "," ++ escapeURIString isOk (toString raw)
64 else "data:" ++ mime' ++ ";base64," ++ toString (encode raw)
64 else "data:" ++ mime' ++ ";base64," ++ toString (encode raw)
@@ -142,10 +142,18 @@ pCSSUrl sourceURL d = P.try $ do
142 enc <- lift $ getDataURI sourceURL "" url'
142 enc <- lift $ getDataURI sourceURL "" url'
143 return (B.pack $ "url(" ++ enc ++ ")")
143 return (B.pack $ "url(" ++ enc ++ ")")
144
144
145−
146getDataURI :: PandocMonad m => Maybe String -> MimeType -> String -> m String
145getDataURI :: PandocMonad m => Maybe String -> MimeType -> String -> m String
147−getDataURI _ _ src@('d':'a':'t':'a':':':_) = return src -- already data: uri
148getDataURI sourceURL mimetype src = do
146getDataURI sourceURL mimetype src = do
147+ res <- getData sourceURL mimetype src
148+ case res of
149+ Left uri -> return uri
150+ Right x -> return $ makeDataURI x
151+
152+getData :: PandocMonad m
153+ => Maybe String -> MimeType -> String
154+ -> m (Either String (MimeType, ByteString))
155+getData _ _ src@('d':'a':'t':'a':':':_) = return $ Left src-- already data: uri
156+getData sourceURL mimetype src = do
149 let ext = map toLower $ takeExtension src
157 let ext = map toLower $ takeExtension src
150 (raw, respMime) <- fetchItem sourceURL src
158 (raw, respMime) <- fetchItem sourceURL src
151 let raw' = if ext == ".gz"
159 let raw' = if ext == ".gz"
@@ -167,7 +175,9 @@ getDataURI sourceURL mimetype src = do
167 result <- if mime == "text/css"
175 result <- if mime == "text/css"
168 then cssURLs cssSourceURL (takeDirectory src) raw'
176 then cssURLs cssSourceURL (takeDirectory src) raw'
169 else return raw'
177 else return raw'
170− return $ makeDataURI mime result
178+ return $ Right (mime, result)
179+
180+
171
181
172-- | Convert HTML into self-contained HTML, incorporating images,
182-- | Convert HTML into self-contained HTML, incorporating images,
173-- scripts, and CSS using data: URIs.
183-- scripts, and CSS using data: URIs.