i18n: always read and write UTF-8, ignoring current locale (#34)

Also remove a bunch of CPP conditions.
Uses the GHC-version-independent UTF-8 layer from pandoc.
This commit is contained in:
Simon Michael 2011-01-21 01:24:51 +00:00
parent ce4347a2be
commit 6a845eb5e4
15 changed files with 45 additions and 68 deletions

View File

@ -17,15 +17,13 @@ import Data.List
import Safe (readDef) import Safe (readDef)
import System.Console.GetOpt import System.Console.GetOpt
import System.Exit (exitFailure) import System.Exit (exitFailure)
#if __GLASGOW_HASKELL__ <= 610
import Prelude hiding (putStr, putStrLn)
import System.IO.UTF8 (putStr, putStrLn)
#endif
import Hledger.Cli.Options import Hledger.Cli.Options
import Hledger.Cli.Utils (withJournalDo) import Hledger.Cli.Utils (withJournalDo)
import Hledger.Cli.Version (progversionstr, binaryfilename) import Hledger.Cli.Version (progversionstr, binaryfilename)
import Hledger.Data import Hledger.Data
import Prelude hiding (putStr, putStrLn)
import Hledger.Data.UTF8 (putStr, putStrLn)
progname_chart = progname_cli ++ "-chart" progname_chart = progname_cli ++ "-chart"

View File

@ -2,7 +2,8 @@
The Hledger.Data library allows parsing and querying of C++ ledger-style The Hledger.Data library allows parsing and querying of C++ ledger-style
journal files. It generally provides a compatible subset of C++ ledger's journal files. It generally provides a compatible subset of C++ ledger's
functionality. This package re-exports all the Hledger.Data.* modules. functionality. This package re-exports all the Hledger.Data.* modules
(except UTF8, which requires an explicit import.)
-} -}

View File

@ -19,6 +19,7 @@ module Data.Time.Calendar,
module Data.Time.LocalTime, module Data.Time.LocalTime,
module Debug.Trace, module Debug.Trace,
module Hledger.Data.Utils, module Hledger.Data.Utils,
-- module Hledger.Data.UTF8,
module Text.Printf, module Text.Printf,
module Text.RegexPR, module Text.RegexPR,
module Test.HUnit, module Test.HUnit,
@ -36,10 +37,9 @@ import Data.Time.Clock
import Data.Time.Calendar import Data.Time.Calendar
import Data.Time.LocalTime import Data.Time.LocalTime
import Debug.Trace import Debug.Trace
#if __GLASGOW_HASKELL__ <= 610 -- needs to be done in each module I think
import Prelude hiding (readFile,putStr,print) -- import Prelude hiding (readFile,writeFile,getContents,putStr,putStrLn)
import System.IO.UTF8 -- import Hledger.Data.UTF8
#endif
import Test.HUnit import Test.HUnit
import Text.Printf import Text.Printf
import Text.RegexPR import Text.RegexPR

View File

@ -16,13 +16,6 @@ module Hledger.Read (
myTimelog, myTimelog,
) )
where where
import Hledger.Data.Dates (getCurrentDay)
import Hledger.Data.Types (Journal(..), Reader(..))
import Hledger.Data.Journal (nullctx)
import Hledger.Data.Utils
import Hledger.Read.JournalReader as JournalReader
import Hledger.Read.TimelogReader as TimelogReader
import Control.Monad.Error import Control.Monad.Error
import Data.Either (partitionEithers) import Data.Either (partitionEithers)
import Safe (headDef) import Safe (headDef)
@ -30,12 +23,15 @@ import System.Directory (doesFileExist, getHomeDirectory)
import System.Environment (getEnv) import System.Environment (getEnv)
import System.FilePath ((</>)) import System.FilePath ((</>))
import System.IO (IOMode(..), withFile, stderr) import System.IO (IOMode(..), withFile, stderr)
#if __GLASGOW_HASKELL__ <= 610
import Hledger.Data.Dates (getCurrentDay)
import Hledger.Data.Types (Journal(..), Reader(..))
import Hledger.Data.Journal (nullctx)
import Hledger.Data.Utils
import Prelude hiding (getContents) import Prelude hiding (getContents)
import System.IO.UTF8 (getContents, hGetContents) import Hledger.Data.UTF8 (getContents, hGetContents)
#else import Hledger.Read.JournalReader as JournalReader
import System.IO (hGetContents) import Hledger.Read.TimelogReader as TimelogReader
#endif
journalenvvar = "LEDGER_FILE" journalenvvar = "LEDGER_FILE"

View File

@ -121,12 +121,10 @@ import Control.Monad.Error (ErrorT(..), throwError, catchError)
import Data.List.Split (wordsBy) import Data.List.Split (wordsBy)
import Safe (headDef) import Safe (headDef)
import Text.ParserCombinators.Parsec hiding (parse) import Text.ParserCombinators.Parsec hiding (parse)
#if __GLASGOW_HASKELL__ <= 610
import Prelude hiding (readFile, putStr, putStrLn, print, getContents)
import System.IO.UTF8
#endif
import Hledger.Data import Hledger.Data
import Prelude hiding (readFile)
import Hledger.Data.UTF8 (readFile)
import Hledger.Read.Utils import Hledger.Read.Utils

View File

@ -42,12 +42,14 @@ library
Hledger.Data.TimeLog Hledger.Data.TimeLog
Hledger.Data.Types Hledger.Data.Types
Hledger.Data.Utils Hledger.Data.Utils
Hledger.Data.UTF8
Hledger.Read Hledger.Read
Hledger.Read.Utils Hledger.Read.Utils
Hledger.Read.JournalReader Hledger.Read.JournalReader
Hledger.Read.TimelogReader Hledger.Read.TimelogReader
Build-Depends: Build-Depends:
base >= 3 && < 5 base >= 3 && < 5
,bytestring
,containers ,containers
,directory ,directory
,filepath ,filepath

View File

@ -7,10 +7,6 @@ Released under GPL version 3 or later.
module Hledger.Vty.Main where module Hledger.Vty.Main where
#if __GLASGOW_HASKELL__ <= 610
import Prelude hiding (putStr, putStrLn)
import System.IO.UTF8 (putStr, putStrLn)
#endif
import Graphics.Vty import Graphics.Vty
import Safe (headDef) import Safe (headDef)
import System.Console.GetOpt import System.Console.GetOpt
@ -22,6 +18,8 @@ import Hledger.Cli.Register
import Hledger.Cli.Utils (withJournalDo) import Hledger.Cli.Utils (withJournalDo)
import Hledger.Cli.Version (progversionstr, binaryfilename) import Hledger.Cli.Version (progversionstr, binaryfilename)
import Hledger.Data import Hledger.Data
import Prelude hiding (putStr, putStrLn)
import Hledger.Data.UTF8 (putStr, putStrLn)
progname_vty = progname_cli ++ "-vty" progname_vty = progname_cli ++ "-vty"

View File

@ -7,10 +7,6 @@ Released under GPL version 3 or later.
module Hledger.Web.Main where module Hledger.Web.Main where
#if __GLASGOW_HASKELL__ <= 610
import Prelude hiding (putStr, putStrLn)
import System.IO.UTF8 (putStr, putStrLn)
#endif
import Control.Concurrent (forkIO, threadDelay) import Control.Concurrent (forkIO, threadDelay)
import Network.Wai.Handler.SimpleServer (run) import Network.Wai.Handler.SimpleServer (run)
import System.Exit (exitFailure) import System.Exit (exitFailure)
@ -23,6 +19,8 @@ import Hledger.Cli.Options
import Hledger.Cli.Utils (withJournalDo, openBrowserOn) import Hledger.Cli.Utils (withJournalDo, openBrowserOn)
import Hledger.Cli.Version (progversionstr, binaryfilename) import Hledger.Cli.Version (progversionstr, binaryfilename)
import Hledger.Data import Hledger.Data
import Prelude hiding (putStr, putStrLn)
import Hledger.Data.UTF8 (putStr, putStrLn)
import Hledger.Web.App (App(..), withApp) import Hledger.Web.App (App(..), withApp)
import Hledger.Web.Files (createFilesIfMissing) import Hledger.Web.Files (createFilesIfMissing)
import Hledger.Web.Settings (browserstartdelay, defhost, defport, datadir) import Hledger.Web.Settings (browserstartdelay, defhost, defport, datadir)

View File

@ -15,13 +15,10 @@ import Hledger.Data
import Hledger.Read.JournalReader (someamount) import Hledger.Read.JournalReader (someamount)
import Hledger.Cli.Options import Hledger.Cli.Options
import Hledger.Cli.Register (registerReport, registerReportAsText) import Hledger.Cli.Register (registerReport, registerReportAsText)
#if __GLASGOW_HASKELL__ <= 610 import Prelude hiding (putStr, putStrLn, appendFile)
import Prelude hiding (putStr, putStrLn, getLine, appendFile) import Hledger.Data.UTF8 (putStr, putStrLn, appendFile)
import System.IO.UTF8
import System.IO ( stderr )
#else
import System.IO ( stderr, hPutStrLn, hPutStr ) import System.IO ( stderr, hPutStrLn, hPutStr )
#endif
import System.IO.Error import System.IO.Error
import Text.ParserCombinators.Parsec import Text.ParserCombinators.Parsec
import Hledger.Cli.Utils (readJournalWithOpts) import Hledger.Cli.Utils (readJournalWithOpts)

View File

@ -111,10 +111,8 @@ import Hledger.Data.AccountName
import Hledger.Data.Posting import Hledger.Data.Posting
import Hledger.Data.Ledger import Hledger.Data.Ledger
import Hledger.Cli.Options import Hledger.Cli.Options
#if __GLASGOW_HASKELL__ <= 610 import Prelude hiding (putStr)
import Prelude hiding ( putStr ) import Hledger.Data.UTF8 (putStr)
import System.IO.UTF8
#endif
-- | A balance report is a chart of accounts with balances, and their grand total. -- | A balance report is a chart of accounts with balances, and their grand total.

View File

@ -9,10 +9,8 @@ module Hledger.Cli.Histogram
where where
import Hledger.Data import Hledger.Data
import Hledger.Cli.Options import Hledger.Cli.Options
#if __GLASGOW_HASKELL__ <= 610 import Prelude hiding (putStr)
import Prelude hiding ( putStr ) import Hledger.Data.UTF8 (putStr)
import System.IO.UTF8
#endif
barchar = '*' barchar = '*'

View File

@ -39,11 +39,8 @@ See "Hledger.Data.Ledger" for more examples.
module Hledger.Cli.Main where module Hledger.Cli.Main where
#if __GLASGOW_HASKELL__ <= 610
import Prelude hiding (putStr, putStrLn) import Prelude hiding (putStr, putStrLn)
import System.IO.UTF8 import Hledger.Data.UTF8 (putStr, putStrLn)
#endif
import Hledger.Data import Hledger.Data
import Hledger.Cli.Commands import Hledger.Cli.Commands
import Hledger.Cli.Options import Hledger.Cli.Options

View File

@ -12,12 +12,10 @@ module Hledger.Cli.Print (
,journalReport ,journalReport
,showTransactions ,showTransactions
) where ) where
import Hledger.Data
import Hledger.Cli.Options import Hledger.Cli.Options
#if __GLASGOW_HASKELL__ <= 610 import Hledger.Data
import Prelude hiding ( putStr ) import Prelude hiding (putStr)
import System.IO.UTF8 import Hledger.Data.UTF8 (putStr)
#endif
-- | A "journal report" is just a list of transactions. -- | A "journal report" is just a list of transactions.

View File

@ -16,14 +16,13 @@ module Hledger.Cli.Register (
) where ) where
import Safe (headMay, lastMay) import Safe (headMay, lastMay)
import Hledger.Data
import Hledger.Cli.Options
#if __GLASGOW_HASKELL__ <= 610
import Prelude hiding ( putStr )
import System.IO.UTF8
#endif
import Text.ParserCombinators.Parsec import Text.ParserCombinators.Parsec
import Hledger.Cli.Options
import Hledger.Data
import Prelude hiding (putStr)
import Hledger.Data.UTF8 (putStr)
-- | A register report is a list of postings to an account or set of -- | A register report is a list of postings to an account or set of
-- accounts, with a running total. Postings may be actual postings, or -- accounts, with a running total. Postings may be actual postings, or

View File

@ -7,13 +7,12 @@ Print some statistics for the journal.
module Hledger.Cli.Stats module Hledger.Cli.Stats
where where
import Hledger.Data
import Hledger.Cli.Options
import qualified Data.Map as Map import qualified Data.Map as Map
#if __GLASGOW_HASKELL__ <= 610
import Prelude hiding ( putStr ) import Hledger.Cli.Options
import System.IO.UTF8 import Hledger.Data
#endif import Prelude hiding (putStr)
import Hledger.Data.UTF8 (putStr)
-- like Register.summarisePostings -- like Register.summarisePostings