From 1864bb0994cc70b99ea8207b3a22438c343348c0 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sat, 29 Dec 2012 17:44:02 -0800 Subject: Data files changes. * Added `embed_data_files` flag. (not yet used) * Shared no longer exports `findDataFile`. * `readDataFile` now returns a strict bytestring. * Shared now exports `readDataFileUTF8` which returns a string like the old `readDataFile`. * Rewrote modules to use new data file functions and to avoid using functions from Paths_pandoc directly. --- src/Text/Pandoc/Writers/Docx.hs | 13 ++----------- src/Text/Pandoc/Writers/EPUB.hs | 7 ++++--- src/Text/Pandoc/Writers/ODT.hs | 15 +++------------ 3 files changed, 9 insertions(+), 26 deletions(-) (limited to 'src/Text/Pandoc/Writers') diff --git a/src/Text/Pandoc/Writers/Docx.hs b/src/Text/Pandoc/Writers/Docx.hs index b0f31ac45..706ced967 100644 --- a/src/Text/Pandoc/Writers/Docx.hs +++ b/src/Text/Pandoc/Writers/Docx.hs @@ -29,14 +29,12 @@ Conversion of 'Pandoc' documents to docx. -} module Text.Pandoc.Writers.Docx ( writeDocx ) where import Data.List ( intercalate ) -import System.FilePath ( () ) import qualified Data.ByteString.Lazy as B import qualified Data.Map as M import qualified Text.Pandoc.UTF8 as UTF8 import System.IO ( stderr ) import Codec.Archive.Zip import Data.Time.Clock.POSIX -import Paths_pandoc ( getDataFileName ) import Text.Pandoc.Definition import Text.Pandoc.Generic import System.Directory @@ -104,15 +102,8 @@ writeDocx opts doc@(Pandoc (Meta tit auths date) _) = do refArchive <- liftM toArchive $ case writerReferenceDocx opts of Just f -> B.readFile f - Nothing -> do - let defaultDocx = getDataFileName "reference.docx" >>= B.readFile - case datadir of - Nothing -> defaultDocx - Just d -> do - exists <- doesFileExist (d "reference.docx") - if exists - then B.readFile (d "reference.docx") - else defaultDocx + Nothing -> (B.fromChunks . (:[])) `fmap` + readDataFile datadir "reference.docx" (newContents, st) <- runStateT (writeOpenXML opts{writerWrapText = False} doc) defaultWriterState diff --git a/src/Text/Pandoc/Writers/EPUB.hs b/src/Text/Pandoc/Writers/EPUB.hs index e7feace7a..4ffff0054 100644 --- a/src/Text/Pandoc/Writers/EPUB.hs +++ b/src/Text/Pandoc/Writers/EPUB.hs @@ -30,13 +30,13 @@ Conversion of 'Pandoc' documents to EPUB. module Text.Pandoc.Writers.EPUB ( writeEPUB2, writeEPUB3 ) where import Data.IORef import Data.Maybe ( fromMaybe, isNothing ) -import Data.List ( isPrefixOf, isInfixOf, intercalate ) +import Data.List ( isInfixOf, intercalate ) import System.Environment ( getEnv ) import Text.Printf (printf) import System.FilePath ( (), takeBaseName, takeExtension, takeFileName ) import qualified Data.ByteString.Lazy as B import qualified Data.ByteString.Lazy.Char8 as B8 -import Text.Pandoc.UTF8 ( fromStringLazy ) +import Text.Pandoc.UTF8 ( fromStringLazy, toString ) import Codec.Archive.Zip import Data.Time.Clock.POSIX import Data.Time @@ -321,7 +321,8 @@ writeEPUB version opts doc@(Pandoc meta _) = do -- stylesheet stylesheet <- case writerEpubStylesheet opts of Just s -> return s - Nothing -> readDataFile (writerUserDataDir opts) "epub.css" + Nothing -> toString `fmap` + readDataFile (writerUserDataDir opts) "epub.css" let stylesheetEntry = mkEntry "stylesheet.css" $ fromStringLazy stylesheet -- construct archive diff --git a/src/Text/Pandoc/Writers/ODT.hs b/src/Text/Pandoc/Writers/ODT.hs index cbff88be5..5e92cfcec 100644 --- a/src/Text/Pandoc/Writers/ODT.hs +++ b/src/Text/Pandoc/Writers/ODT.hs @@ -35,15 +35,13 @@ import qualified Data.ByteString.Lazy as B import Text.Pandoc.UTF8 ( fromStringLazy ) import Codec.Archive.Zip import Data.Time.Clock.POSIX -import Paths_pandoc ( getDataFileName ) import Text.Pandoc.Options ( WriterOptions(..) ) -import Text.Pandoc.Shared ( stringify ) +import Text.Pandoc.Shared ( stringify, readDataFile ) import Text.Pandoc.ImageSize ( readImageSize, sizeInPoints ) import Text.Pandoc.MIME ( getMimeType ) import Text.Pandoc.Definition import Text.Pandoc.Generic import Text.Pandoc.Writers.OpenDocument ( writeOpenDocument ) -import System.Directory import Control.Monad (liftM) import Network.URI ( unEscapeString ) import Text.Pandoc.XML @@ -59,15 +57,8 @@ writeODT opts doc@(Pandoc (Meta title _ _) _) = do refArchive <- liftM toArchive $ case writerReferenceODT opts of Just f -> B.readFile f - Nothing -> do - let defaultODT = getDataFileName "reference.odt" >>= B.readFile - case datadir of - Nothing -> defaultODT - Just d -> do - exists <- doesFileExist (d "reference.odt") - if exists - then B.readFile (d "reference.odt") - else defaultODT + Nothing -> (B.fromChunks . (:[])) `fmap` + readDataFile datadir "reference.odt" -- handle pictures picEntriesRef <- newIORef ([] :: [Entry]) let sourceDir = writerSourceDirectory opts -- cgit v1.2.3