git.iko.soy/typeable/pandoc
on master help sign in
EPUB changes.
0cc9504John MacFarlane
src/Text/Pandoc.hs+5−4
@@ -92,8 +92,7 @@ module Text.Pandoc
92 , writeRTF
92 , writeRTF
93 , writeODT
93 , writeODT
94 , writeDocx
94 , writeDocx
95− , writeEPUB2
95+ , writeEPUB
96− , writeEPUB3
97 , writeFB2
96 , writeFB2
98 , writeOrg
97 , writeOrg
99 , writeAsciiDoc
98 , writeAsciiDoc
@@ -207,8 +206,10 @@ writers = [
207 ,("json" , PureStringWriter $ \_ -> encodeJSON)
206 ,("json" , PureStringWriter $ \_ -> encodeJSON)
208 ,("docx" , IOByteStringWriter writeDocx)
207 ,("docx" , IOByteStringWriter writeDocx)
209 ,("odt" , IOByteStringWriter writeODT)
208 ,("odt" , IOByteStringWriter writeODT)
210− ,("epub" , IOByteStringWriter writeEPUB2)
209+ ,("epub" , IOByteStringWriter $ \o ->
210+ writeEPUB o{ writerEpubVersion = Just EPUB2 })
211− ,("epub3" , IOByteStringWriter writeEPUB3)
211+ ,("epub3" , IOByteStringWriter $ \o ->
212+ writeEPUB o{ writerEpubVersion = Just EPUB3 })
212 ,("fb2" , IOStringWriter writeFB2)
213 ,("fb2" , IOStringWriter writeFB2)
213 ,("html" , PureStringWriter writeHtmlString)
214 ,("html" , PureStringWriter writeHtmlString)
214 ,("html5" , PureStringWriter $ \o ->
215 ,("html5" , PureStringWriter $ \o ->
src/Text/Pandoc/Options.hs+5
@@ -36,6 +36,7 @@ module Text.Pandoc.Options ( Extension(..)
36 , CiteMethod (..)
36 , CiteMethod (..)
37 , ObfuscationMethod (..)
37 , ObfuscationMethod (..)
38 , HTMLSlideVariant (..)
38 , HTMLSlideVariant (..)
39+ , EPUBVersion (..)
39 , WriterOptions (..)
40 , WriterOptions (..)
40 , def
41 , def
41 , isEnabled
42 , isEnabled
@@ -173,6 +174,8 @@ instance Default ReaderOptions
173-- Writer options
174-- Writer options
174--
175--
175
176
177+data EPUBVersion = EPUB2 | EPUB3 deriving (Eq, Show, Read)
178+
176data HTMLMathMethod = PlainMath
179data HTMLMathMethod = PlainMath
177 | LaTeXMathML (Maybe String) -- url of LaTeXMathML.js
180 | LaTeXMathML (Maybe String) -- url of LaTeXMathML.js
178 | JsMath (Maybe String) -- url of jsMath load script
181 | JsMath (Maybe String) -- url of jsMath load script
@@ -234,6 +237,7 @@ data WriterOptions = WriterOptions
234 , writerHighlightStyle :: Style -- ^ Style to use for highlighting
237 , writerHighlightStyle :: Style -- ^ Style to use for highlighting
235 , writerSetextHeaders :: Bool -- ^ Use setext headers for levels 1-2 in markdown
238 , writerSetextHeaders :: Bool -- ^ Use setext headers for levels 1-2 in markdown
236 , writerTeXLigatures :: Bool -- ^ Use tex ligatures quotes, dashes in latex
239 , writerTeXLigatures :: Bool -- ^ Use tex ligatures quotes, dashes in latex
240+ , writerEpubVersion :: Maybe EPUBVersion -- ^ Nothing or EPUB version
237 , writerEpubMetadata :: String -- ^ Metadata to include in EPUB
241 , writerEpubMetadata :: String -- ^ Metadata to include in EPUB
238 , writerEpubStylesheet :: Maybe String -- ^ EPUB stylesheet specified at command line
242 , writerEpubStylesheet :: Maybe String -- ^ EPUB stylesheet specified at command line
239 , writerEpubFonts :: [FilePath] -- ^ Paths to fonts to embed
243 , writerEpubFonts :: [FilePath] -- ^ Paths to fonts to embed
@@ -274,6 +278,7 @@ instance Default WriterOptions where
274 , writerHighlightStyle = pygments
278 , writerHighlightStyle = pygments
275 , writerSetextHeaders = True
279 , writerSetextHeaders = True
276 , writerTeXLigatures = True
280 , writerTeXLigatures = True
281+ , writerEpubVersion = Nothing
277 , writerEpubMetadata = ""
282 , writerEpubMetadata = ""
278 , writerEpubStylesheet = Nothing
283 , writerEpubStylesheet = Nothing
279 , writerEpubFonts = []
284 , writerEpubFonts = []
src/Text/Pandoc/Writers/EPUB.hs+4−12
@@ -27,7 +27,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27
27
28Conversion of 'Pandoc' documents to EPUB.
28Conversion of 'Pandoc' documents to EPUB.
29-}
29-}
30−module Text.Pandoc.Writers.EPUB ( writeEPUB2, writeEPUB3 ) where
30+module Text.Pandoc.Writers.EPUB ( writeEPUB ) where
31import Data.IORef
31import Data.IORef
32import Data.Maybe ( fromMaybe, isNothing )
32import Data.Maybe ( fromMaybe, isNothing )
33import Data.List ( isInfixOf, intercalate )
33import Data.List ( isInfixOf, intercalate )
@@ -58,20 +58,12 @@ import Prelude hiding (catch)
58import Control.Exception (catch, SomeException)
58import Control.Exception (catch, SomeException)
59import Text.Blaze.Html.Renderer.Utf8 (renderHtml)
59import Text.Blaze.Html.Renderer.Utf8 (renderHtml)
60
60
61−data EPUBVersion = EPUB2 | EPUB3 deriving Eq
62−
63−writeEPUB2, writeEPUB3 :: WriterOptions -- ^ Writer options
64− -> Pandoc -- ^ Document to convert
65− -> IO B.ByteString
66−writeEPUB2 = writeEPUB EPUB2
67−writeEPUB3 = writeEPUB EPUB3
68−
69-- | Produce an EPUB file from a Pandoc document.
61-- | Produce an EPUB file from a Pandoc document.
70−writeEPUB :: EPUBVersion
71− -> WriterOptions -- ^ Writer options
62+writeEPUB :: WriterOptions -- ^ Writer options
72 -> Pandoc -- ^ Document to convert
63 -> Pandoc -- ^ Document to convert
73 -> IO B.ByteString
64 -> IO B.ByteString
74−writeEPUB version opts doc@(Pandoc meta _) = do
65+writeEPUB opts doc@(Pandoc meta _) = do
66+ let version = maybe EPUB2 id (writerEpubVersion opts)
75 let epub3 = version == EPUB3
67 let epub3 = version == EPUB3
76 epochtime <- floor `fmap` getPOSIXTime
68 epochtime <- floor `fmap` getPOSIXTime
77 let mkEntry path content = toEntry path epochtime content
69 let mkEntry path content = toEntry path epochtime content