@@ -59,10 +59,9 @@ import Control.Monad (mplus, when, zipWithM)
5959import Text.XML.Light ( unode, Element(..), unqual, Attr(..), add_attrs
6060 , strContent, lookupAttr, Node(..), QName(..), parseXML
6161 , onlyElems, node, ppElement)
62−import Text.Pandoc.Writers.HTML ( writeHtml4, writeHtml5 )
62+import Text.Pandoc.Writers.HTML ( writeHtmlStringForEPUB )
6363import Data.Char ( toLower, isDigit, isAlphaNum )
6464import Text.Pandoc.MIME (MimeType, getMimeType, extensionFromMimeType)
65−import Text.Blaze.Html.Renderer.Utf8 (renderHtml)
6665import Text.HTML.TagSoup (Tag(TagOpen), fromAttrib, parseTags)
6766import Control.Monad.Except (throwError, catchError)
6867import Text.Pandoc.Error
@@ -361,16 +360,18 @@ writeEPUB epubVersion opts doc =
361360 let initState = EPUBState { stMediaPaths = []
362361 }
363362 in
364− evalStateT (pandocToEPUB opts{ writerEpubVersion = Just epubVersion } doc)
363+ evalStateT (pandocToEPUB epubVersion opts doc)
365364 initState
366365
367366pandocToEPUB :: PandocMonad m
368− => WriterOptions
367+ => EPUBVersion
368+ -> WriterOptions
369369 -> Pandoc
370370 -> E m B.ByteString
371−pandocToEPUB opts doc@(Pandoc meta _) = do
372− let version = fromMaybe EPUB2 (writerEpubVersion opts)
373− let epub3 = writerEpubVersion opts == Just EPUB3
371+pandocToEPUB version opts doc@(Pandoc meta _) = do
372+ let epub3 = version == EPUB3
373+ let writeHtml o = fmap UTF8.fromStringLazy .
374+ writeHtmlStringForEPUB version o
374375 epochtime <- floor <$> lift P.getPOSIXTime
375376 let mkEntry path content = toEntry path epochtime content
376377 let vars = ("epub3", if epub3 then "true" else "false")
@@ -384,9 +385,6 @@ pandocToEPUB opts doc@(Pandoc meta _) = do
384385 then MathML Nothing
385386 else writerHTMLMathMethod opts
386387 , writerWrapText = WrapAuto }
387− let writeHtml = if epub3
388− then writeHtml5
389− else writeHtml4
390388 metadata <- getEPUBMetadata opts' meta
391389
392390 -- cover page
@@ -395,17 +393,17 @@ pandocToEPUB opts doc@(Pandoc meta _) = do
395393 Nothing -> return ([],[])
396394 Just img -> do
397395 let coverImage = "media/" ++ takeFileName img
398− cpContent <- renderHtml <$> (lift $ writeHtml
396+ cpContent <- lift $ writeHtml
399397 opts'{ writerVariables = ("coverpage","true"):vars }
400− (Pandoc meta [RawBlock (Format "html") $ "<div id=\"cover-image\">\n<img src=\"" ++ coverImage ++ "\" alt=\"cover image\" />\n</div>"]))
398+ (Pandoc meta [RawBlock (Format "html") $ "<div id=\"cover-image\">\n<img src=\"" ++ coverImage ++ "\" alt=\"cover image\" />\n</div>"])
401399 imgContent <- lift $ P.readFileLazy img
402400 return ( [mkEntry "cover.xhtml" cpContent]
403401 , [mkEntry coverImage imgContent] )
404402
405403 -- title page
406− tpContent <- renderHtml <$> (lift $ writeHtml opts'{
404+ tpContent <- lift $ writeHtml opts'{
407405 writerVariables = ("titlepage","true"):vars }
408− (Pandoc meta []))
406+ (Pandoc meta [])
409407 let tpEntry = mkEntry "title_page.xhtml" tpContent
410408
411409 -- handle pictures
@@ -504,9 +502,8 @@ pandocToEPUB opts doc@(Pandoc meta _) = do
504502 chapters'
505503
506504 let chapToEntry num (Chapter mbnum bs) =
507− (mkEntry (showChapter num) . renderHtml) <$>
508− (writeHtml opts'{ writerNumberOffset =
509− fromMaybe [] mbnum }
505+ mkEntry (showChapter num) <$>
506+ (writeHtml opts'{ writerNumberOffset = fromMaybe [] mbnum }
510507 $ case bs of
511508 (Header _ _ xs : _) ->
512509 -- remove notes or we get doubled footnotes
@@ -702,11 +699,10 @@ pandocToEPUB opts doc@(Pandoc meta _) = do
702699 ]
703700 ]
704701 else []
705− navData <- renderHtml <$> (lift $ writeHtml
706− opts'{ writerVariables = ("navpage","true"):vars }
702+ navData <- lift $ writeHtml opts'{ writerVariables = ("navpage","true"):vars }
707703 (Pandoc (setMeta "title"
708704 (walk removeNote $ fromList $ docTitle' meta) nullMeta)
709− (navBlocks ++ landmarks)))
705+ (navBlocks ++ landmarks))
710706 let navEntry = mkEntry "nav.xhtml" navData
711707
712708 -- mimetype