Simplify the implementation of writeUTF8File and use it in one more place.
Remove unused imports left over after a previous change.
This commit is contained in:
hallgren
2012-10-23 11:48:23 +00:00
parent c084e1b040
commit 7565ba8b87
3 changed files with 9 additions and 15 deletions

View File

@@ -188,16 +188,14 @@ putPointE v opts msg act = do
-- * File IO
writeUTF8File :: FilePath -> String -> IO ()
writeUTF8File fpath content = do
h <- openFile fpath WriteMode
hSetEncoding h utf8
hPutStr h content
hClose h
writeUTF8File fpath content =
withFile fpath WriteMode $ \ h -> do hSetEncoding h utf8
hPutStr h content
readBinaryFile path = hGetContents =<< openBinaryFile path ReadMode
writeBinaryFile path s = withBinaryFile path WriteMode (flip hPutStr s)
-- Because GHC adds the confusing text "user error" for failures cased by
-- | Because GHC adds the confusing text "user error" for failures caused by
-- calls to fail.
ioErrorText e = if isUserError e
then ioeGetErrorString e

View File

@@ -117,11 +117,7 @@ grammarName opts pgf = fromMaybe (showCId (absname pgf)) (flag optName opts)
writeOutput :: Options -> FilePath-> String -> IOE ()
writeOutput opts file str =
do let path = case flag optOutputDir opts of
Nothing -> file
Just dir -> dir </> file
putPointE Normal opts ("Writing " ++ path ++ "...") $ ioeIO $
bracket
(openFile path WriteMode)
(hClose)
(\h -> hSetEncoding h utf8 >> hPutStr h str)
putPointE Normal opts ("Writing " ++ path ++ "...") $ ioeIO $
writeUTF8File path str
where
path = maybe id (</>) (flag optOutputDir opts) file

View File

@@ -40,7 +40,7 @@ import Data.List(nub,isPrefixOf,isInfixOf,partition)
import qualified Data.Map as Map
import qualified Data.ByteString.Char8 as BS
import qualified Text.ParserCombinators.ReadP as RP
import System.IO(utf8,mkTextEncoding,hSetEncoding,stdin,stdout,stderr)
import System.IO(utf8)
--import System.CPUTime(getCPUTime)
import System.Directory({-getCurrentDirectory,-}getAppUserDataDirectory)
import Control.Exception(SomeException,fromException,evaluate,try)