@@ -51,7 +51,7 @@ import Control.Monad (when, unless, liftM)
5151import Network.HTTP (simpleHTTP, mkRequest, getResponseBody, RequestMethod(..))
5252import Network.URI (parseURI, isURI, URI(..))
5353import qualified Data.ByteString.Lazy as B
54−import Data.ByteString.Lazy.UTF8 (toString, fromString)
54+import Data.ByteString.Lazy.UTF8 (toString )
5555import Codec.Binary.UTF8.String (decodeString, encodeString)
5656
5757copyrightMessage :: String
@@ -713,14 +713,6 @@ main = do
713713 Just r -> return r
714714 Nothing -> error ("Unknown reader: " ++ readerName')
715715
716− let writer = case lookup writerName' writers of
717− Nothing | writerName' == "epub" -> writeEPUB epubStylesheet
718− Nothing | writerName' == "odt" -> writeODT referenceODT
719− Just r -> \o ->
720− return . fromString . r o
721− Nothing -> error $ "Unknown writer: " ++
722− writerName'
723−
724716 templ <- getDefaultTemplate datadir writerName'
725717 let defaultTemplate = case templ of
726718 Right t -> t
@@ -855,12 +847,16 @@ main = do
855847 processBiblio cslfile' refs doc1
856848 else return doc1
857849
858− writerOutput <- writer writerOptions doc2
859−
860− let writerOutput' = if standalone'
861− then writerOutput
862− else writerOutput `B.snoc` 10
863−
864− if outputFile == "-"
865− then B.putStr writerOutput'
866− else B.writeFile (encodeString outputFile) writerOutput'
850+ case lookup writerName' writers of
851+ Nothing | writerName' == "epub" ->
852+ writeEPUB epubStylesheet writerOptions doc2
853+ >>= B.writeFile (encodeString outputFile)
854+ Nothing | writerName' == "odt" ->
855+ writeODT referenceODT writerOptions doc2
856+ >>= B.writeFile (encodeString outputFile)
857+ Just r -> writerFn outputFile result
858+ where writerFn "-" = UTF8.putStr
859+ writerFn f = UTF8.writeFile f
860+ result = r writerOptions doc2 ++
861+ ['\n' | not standalone']
862+ Nothing -> error $ "Unknown writer: " ++ writerName'