git.iko.soy/typeable/pandoc
on master help sign in
EPUB changes.

* Epub writer now exports writeEPUB, not writeEPUB2 and writeEPUB3. * Options now exports EPUBVersion * WriterOptions now includes writerEpubVersion.

commit0cc9504796849e017d90ef05b8183bee94ea1972 authorJohn MacFarlane <fiddlosopher@gmail.com> dateSat 5 Jan 2013, 13:00 (14 years ago) parentea3eaaa
3 files changed+14−16
src/Text/Pandoc.hs+5−4 src/Text/Pandoc/Options.hs+5 src/Text/Pandoc/Writers/EPUB.hs+4−12
src/Text/Pandoc.hs+5−4
@@ -92,8 +92,7 @@ module Text.Pandoc
9292 , writeRTF
9393 , writeODT
9494 , writeDocx
95− , writeEPUB2
96− , writeEPUB3
95+ , writeEPUB
9796 , writeFB2
9897 , writeOrg
9998 , writeAsciiDoc
@@ -207,8 +206,10 @@ writers = [
207206 ,("json" , PureStringWriter $ \_ -> encodeJSON)
208207 ,("docx" , IOByteStringWriter writeDocx)
209208 ,("odt" , IOByteStringWriter writeODT)
210− ,("epub" , IOByteStringWriter writeEPUB2)
211− ,("epub3" , IOByteStringWriter writeEPUB3)
209+ ,("epub" , IOByteStringWriter $ \o ->
210+ writeEPUB o{ writerEpubVersion = Just EPUB2 })
211+ ,("epub3" , IOByteStringWriter $ \o ->
212+ writeEPUB o{ writerEpubVersion = Just EPUB3 })
212213 ,("fb2" , IOStringWriter writeFB2)
213214 ,("html" , PureStringWriter writeHtmlString)
214215 ,("html5" , PureStringWriter $ \o ->
src/Text/Pandoc/Options.hs+5
@@ -36,6 +36,7 @@ module Text.Pandoc.Options ( Extension(..)
3636 , CiteMethod (..)
3737 , ObfuscationMethod (..)
3838 , HTMLSlideVariant (..)
39+ , EPUBVersion (..)
3940 , WriterOptions (..)
4041 , def
4142 , isEnabled
@@ -173,6 +174,8 @@ instance Default ReaderOptions
173174-- Writer options
174175--
175176
177+data EPUBVersion = EPUB2 | EPUB3 deriving (Eq, Show, Read)
178+
176179data HTMLMathMethod = PlainMath
177180 | LaTeXMathML (Maybe String) -- url of LaTeXMathML.js
178181 | JsMath (Maybe String) -- url of jsMath load script
@@ -234,6 +237,7 @@ data WriterOptions = WriterOptions
234237 , writerHighlightStyle :: Style -- ^ Style to use for highlighting
235238 , writerSetextHeaders :: Bool -- ^ Use setext headers for levels 1-2 in markdown
236239 , writerTeXLigatures :: Bool -- ^ Use tex ligatures quotes, dashes in latex
240+ , writerEpubVersion :: Maybe EPUBVersion -- ^ Nothing or EPUB version
237241 , writerEpubMetadata :: String -- ^ Metadata to include in EPUB
238242 , writerEpubStylesheet :: Maybe String -- ^ EPUB stylesheet specified at command line
239243 , writerEpubFonts :: [FilePath] -- ^ Paths to fonts to embed
@@ -274,6 +278,7 @@ instance Default WriterOptions where
274278 , writerHighlightStyle = pygments
275279 , writerSetextHeaders = True
276280 , writerTeXLigatures = True
281+ , writerEpubVersion = Nothing
277282 , writerEpubMetadata = ""
278283 , writerEpubStylesheet = Nothing
279284 , 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
2727
2828Conversion of 'Pandoc' documents to EPUB.
2929-}
30−module Text.Pandoc.Writers.EPUB ( writeEPUB2, writeEPUB3 ) where
30+module Text.Pandoc.Writers.EPUB ( writeEPUB ) where
3131import Data.IORef
3232import Data.Maybe ( fromMaybe, isNothing )
3333import Data.List ( isInfixOf, intercalate )
@@ -58,20 +58,12 @@ import Prelude hiding (catch)
5858import Control.Exception (catch, SomeException)
5959import Text.Blaze.Html.Renderer.Utf8 (renderHtml)
6060
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−
6961-- | Produce an EPUB file from a Pandoc document.
70−writeEPUB :: EPUBVersion
71− -> WriterOptions -- ^ Writer options
62+writeEPUB :: WriterOptions -- ^ Writer options
7263 -> Pandoc -- ^ Document to convert
7364 -> 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)
7567 let epub3 = version == EPUB3
7668 epochtime <- floor `fmap` getPOSIXTime
7769 let mkEntry path content = toEntry path epochtime content