@@ -36,17 +36,18 @@ module Text.Pandoc.Readers.Org.Shared
3636
3737import Prelude
3838import Data.Char (isAlphaNum)
39−import Data.List (isPrefixOf, isSuffixOf)
39+import Data.List (isPrefixOf)
40+import System.FilePath (isValid, takeExtension)
4041
4142
4243-- | Check whether the given string looks like the path to of URL of an image.
4344isImageFilename :: String -> Bool
44−isImageFilename filename =
45− any (\x -> ('.':x) `isSuffixOf` filename) imageExtensions &&
46− (any (\x -> (x ++ "://") `isPrefixOf` filename) protocols ||
47− ':' `notElem` filename)
45+isImageFilename fp = hasImageExtension && (isValid fp || isKnownProtocolUri)
4846 where
49− imageExtensions = [ "jpeg" , "jpg" , "png" , "gif" , "svg" ]
47+ hasImageExtension = takeExtension fp `elem` imageExtensions
48+ isKnownProtocolUri = any (\x -> (x ++ "://") `isPrefixOf` fp) protocols
49+
50+ imageExtensions = [ ".jpeg", ".jpg", ".png", ".gif", ".svg" ]
5051 protocols = [ "file", "http", "https" ]
5152
5253-- | Cleanup and canonicalize a string describing a link. Return @Nothing@ if