diff options
author | John MacFarlane <jgm@berkeley.edu> | 2017-02-24 11:27:52 +0100 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2017-02-24 11:27:52 +0100 |
commit | 0e8b19e709c61b0eda8ba2191d99991ad3f50458 (patch) | |
tree | 16b0536636909bf2cb635176015cdd0b6e100c7e /src | |
parent | 6beeb49b75639253d28d0675243afdb899fbca5f (diff) | |
download | pandoc-0e8b19e709c61b0eda8ba2191d99991ad3f50458.tar.gz |
Refactored getData from getDataURI in SelfContained.
Diffstat (limited to 'src')
-rw-r--r-- | src/Text/Pandoc/SelfContained.hs | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/Text/Pandoc/SelfContained.hs b/src/Text/Pandoc/SelfContained.hs index 4ab13d760..6038baa2f 100644 --- a/src/Text/Pandoc/SelfContained.hs +++ b/src/Text/Pandoc/SelfContained.hs @@ -57,8 +57,8 @@ import Text.Pandoc.Logging isOk :: Char -> Bool isOk c = isAscii c && isAlphaNum c -makeDataURI :: String -> ByteString -> String -makeDataURI mime raw = +makeDataURI :: (MimeType, ByteString) -> String +makeDataURI (mime, raw) = if textual then "data:" ++ mime' ++ "," ++ escapeURIString isOk (toString raw) else "data:" ++ mime' ++ ";base64," ++ toString (encode raw) @@ -142,10 +142,18 @@ pCSSUrl sourceURL d = P.try $ do enc <- lift $ getDataURI sourceURL "" url' return (B.pack $ "url(" ++ enc ++ ")") - getDataURI :: PandocMonad m => Maybe String -> MimeType -> String -> m String -getDataURI _ _ src@('d':'a':'t':'a':':':_) = return src -- already data: uri getDataURI sourceURL mimetype src = do + res <- getData sourceURL mimetype src + case res of + Left uri -> return uri + Right x -> return $ makeDataURI x + +getData :: PandocMonad m + => Maybe String -> MimeType -> String + -> m (Either String (MimeType, ByteString)) +getData _ _ src@('d':'a':'t':'a':':':_) = return $ Left src-- already data: uri +getData sourceURL mimetype src = do let ext = map toLower $ takeExtension src (raw, respMime) <- fetchItem sourceURL src let raw' = if ext == ".gz" @@ -167,7 +175,9 @@ getDataURI sourceURL mimetype src = do result <- if mime == "text/css" then cssURLs cssSourceURL (takeDirectory src) raw' else return raw' - return $ makeDataURI mime result + return $ Right (mime, result) + + -- | Convert HTML into self-contained HTML, incorporating images, -- scripts, and CSS using data: URIs. |