git.iko.soy/typeable/pandoc
on master help sign in
EPUB writer: Don't add sourceURL to absolute URIs!
d60707eJohn MacFarlane
src/Text/Pandoc/Writers/EPUB.hs+10−5
@@ -64,7 +64,7 @@ import Text.XML.Light ( unode, Element(..), unqual, Attr(..), add_attrs
64import Text.Pandoc.UUID (getRandomUUID)
64import Text.Pandoc.UUID (getRandomUUID)
65import Text.Pandoc.Writers.HTML (writeHtmlString, writeHtml)
65import Text.Pandoc.Writers.HTML (writeHtmlString, writeHtml)
66import Data.Char ( toLower, isDigit, isAlphaNum )
66import Data.Char ( toLower, isDigit, isAlphaNum )
67−import Network.URI ( unEscapeString )
67+import Network.URI ( unEscapeString, isURI )
68import Text.Pandoc.MIME (MimeType, getMimeType)
68import Text.Pandoc.MIME (MimeType, getMimeType)
69import qualified Control.Exception as E
69import qualified Control.Exception as E
70import Text.Blaze.Html.Renderer.Utf8 (renderHtml)
70import Text.Blaze.Html.Renderer.Utf8 (renderHtml)
@@ -773,8 +773,12 @@ transformTag opts mediaRef tag@(TagOpen name attr)
773 | name `elem` ["video", "source", "img", "audio"] = do
773 | name `elem` ["video", "source", "img", "audio"] = do
774 let src = fromAttrib "src" tag
774 let src = fromAttrib "src" tag
775 let poster = fromAttrib "poster" tag
775 let poster = fromAttrib "poster" tag
776− let oldsrc = maybe src (</> src) $ writerSourceURL opts
776+ let oldsrc = case writerSourceURL opts of
777− let oldposter = maybe poster (</> poster) $ writerSourceURL opts
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
778 newsrc <- modifyMediaRef mediaRef oldsrc
782 newsrc <- modifyMediaRef mediaRef oldsrc
779 newposter <- modifyMediaRef mediaRef oldposter
783 newposter <- modifyMediaRef mediaRef oldposter
780 let attr' = filter (\(x,_) -> x /= "src" && x /= "poster") attr ++
784 let attr' = filter (\(x,_) -> x /= "src" && x /= "poster") attr ++
@@ -811,8 +815,9 @@ transformInline :: WriterOptions
811 -> Inline
815 -> Inline
812 -> IO Inline
816 -> IO Inline
813transformInline opts mediaRef (Image lab (src,tit)) = do
817transformInline opts mediaRef (Image lab (src,tit)) = do
814− let src' = unEscapeString src
818+ let oldsrc = case (unEscapeString src, writerSourceURL opts) of
815− let oldsrc = maybe src' (</> src) $ writerSourceURL opts
819+ (s, Just u) | not (isURI s) -> u </> s
820+ (s, _) -> s
816 newsrc <- modifyMediaRef mediaRef oldsrc
821 newsrc <- modifyMediaRef mediaRef oldsrc
817 return $ Image lab (newsrc, tit)
822 return $ Image lab (newsrc, tit)
818transformInline opts _ (x@(Math _ _))
823transformInline opts _ (x@(Math _ _))