copy JGM's utf8 IO module from pandoc
This commit is contained in:
		
							parent
							
								
									6208ed017b
								
							
						
					
					
						commit
						46422a7460
					
				
							
								
								
									
										75
									
								
								hledger-lib/Hledger/Data/UTF8.hs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								hledger-lib/Hledger/Data/UTF8.hs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,75 @@ | ||||
| {- | ||||
| Copied from pandoc. | ||||
| 
 | ||||
| ---------------------------------------------------------------------- | ||||
| Copyright (C) 2010 John MacFarlane <jgm@berkeley.edu> | ||||
| 
 | ||||
| This program is free software; you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | ||||
| the Free Software Foundation; either version 2 of the License, or | ||||
| (at your option) any later version. | ||||
| 
 | ||||
| This program is distributed in the hope that it will be useful, | ||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| GNU General Public License for more details. | ||||
| 
 | ||||
| You should have received a copy of the GNU General Public License | ||||
| along with this program; if not, write to the Free Software | ||||
| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | ||||
| -} | ||||
| 
 | ||||
| {- | | ||||
|    Module      : Text.Pandoc.UTF8 | ||||
|    Copyright   : Copyright (C) 2010 John MacFarlane | ||||
|    License     : GNU GPL, version 2 or above  | ||||
| 
 | ||||
|    Maintainer  : John MacFarlane <jgm@berkeley.edu> | ||||
|    Stability   : alpha | ||||
|    Portability : portable | ||||
| 
 | ||||
| UTF-8 aware string IO functions that will work with GHC 6.10 or 6.12. | ||||
| -} | ||||
| module Hledger.Data.UTF8 ( readFile | ||||
|                          , writeFile | ||||
|                          , getContents | ||||
|                          , putStr | ||||
|                          , putStrLn | ||||
|                          , hPutStr | ||||
|                          , hPutStrLn | ||||
|                          ) | ||||
| 
 | ||||
| where | ||||
| import qualified Data.ByteString.Lazy as B | ||||
| import Data.ByteString.Lazy.UTF8 (toString, fromString) | ||||
| import Prelude hiding (readFile, writeFile, getContents, putStr, putStrLn) | ||||
| import System.IO (Handle) | ||||
| import Control.Monad (liftM) | ||||
| 
 | ||||
| bom :: B.ByteString | ||||
| bom = B.pack [0xEF, 0xBB, 0xBF] | ||||
| 
 | ||||
| stripBOM :: B.ByteString -> B.ByteString | ||||
| stripBOM s | bom `B.isPrefixOf` s = B.drop 3 s | ||||
| stripBOM s = s | ||||
| 
 | ||||
| readFile :: FilePath -> IO String | ||||
| readFile = liftM (toString . stripBOM) . B.readFile | ||||
| 
 | ||||
| writeFile :: FilePath -> String -> IO () | ||||
| writeFile f = B.writeFile f . fromString | ||||
| 
 | ||||
| getContents :: IO String | ||||
| getContents = liftM (toString . stripBOM) B.getContents | ||||
| 
 | ||||
| putStr :: String -> IO () | ||||
| putStr = B.putStr . fromString | ||||
| 
 | ||||
| putStrLn :: String -> IO () | ||||
| putStrLn = B.putStrLn . fromString | ||||
| 
 | ||||
| hPutStr :: Handle -> String -> IO () | ||||
| hPutStr h = B.hPutStr h . fromString | ||||
| 
 | ||||
| hPutStrLn :: Handle -> String -> IO () | ||||
| hPutStrLn h s = hPutStr h (s ++ "\n") | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user