@@ -64,7 +64,7 @@ import Text.XML.Light ( unode, Element(..), unqual, Attr(..), add_attrs
6464import Text.Pandoc.UUID (getRandomUUID)
6565import Text.Pandoc.Writers.HTML (writeHtmlString, writeHtml)
6666import Data.Char ( toLower, isDigit, isAlphaNum )
67−import Network.URI ( unEscapeString )
67+import Network.URI ( unEscapeString, isURI )
6868import Text.Pandoc.MIME (MimeType, getMimeType)
6969import qualified Control.Exception as E
7070import Text.Blaze.Html.Renderer.Utf8 (renderHtml)
@@ -773,8 +773,12 @@ transformTag opts mediaRef tag@(TagOpen name attr)
773773 | name `elem` ["video", "source", "img", "audio"] = do
774774 let src = fromAttrib "src" tag
775775 let poster = fromAttrib "poster" tag
776− let oldsrc = maybe src (</> src) $ writerSourceURL opts
777− let oldposter = maybe poster (</> poster) $ writerSourceURL opts
776+ let oldsrc = case writerSourceURL opts of
777+ Just u | not (isURI src) -> u </> src
778+ _ -> src
779+ let oldposter = case writerSourceURL opts of
780+ Just u | not (isURI src) -> u </> poster
781+ _ -> poster
778782 newsrc <- modifyMediaRef mediaRef oldsrc
779783 newposter <- modifyMediaRef mediaRef oldposter
780784 let attr' = filter (\(x,_) -> x /= "src" && x /= "poster") attr ++
@@ -811,8 +815,9 @@ transformInline :: WriterOptions
811815 -> Inline
812816 -> IO Inline
813817transformInline opts mediaRef (Image lab (src,tit)) = do
814− let src' = unEscapeString src
815− let oldsrc = maybe src' (</> src) $ writerSourceURL opts
818+ let oldsrc = case (unEscapeString src, writerSourceURL opts) of
819+ (s, Just u) | not (isURI s) -> u </> s
820+ (s, _) -> s
816821 newsrc <- modifyMediaRef mediaRef oldsrc
817822 return $ Image lab (newsrc, tit)
818823transformInline opts _ (x@(Math _ _))