diff options
Diffstat (limited to 'Hledger/RegisterCSV.hs')
-rw-r--r-- | Hledger/RegisterCSV.hs | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/Hledger/RegisterCSV.hs b/Hledger/RegisterCSV.hs index e8cdfad..69fec77 100644 --- a/Hledger/RegisterCSV.hs +++ b/Hledger/RegisterCSV.hs @@ -23,10 +23,11 @@ import Prelude (String, Double, Show, Eq, (||), Bool(..), const, (<), (>), snd, import Control.Applicative (many) import Control.Monad.IO.Class (MonadIO) import Control.Monad.Trans.Control (MonadBaseControl) -import Control.Monad.Trans.Resource (MonadUnsafeIO, MonadThrow) +import Control.Monad.Trans.Resource (MonadThrow) +import Control.Monad.Primitive (PrimMonad) +import Control.Monad.Base (MonadBase) import Data.List (isPrefixOf) -import Data.Bifunctor (bimap) import qualified Data.Text as T import Hledger.Data.Amount (showMixedAmount) @@ -36,7 +37,8 @@ import Hledger.Query (Query(..)) import Hledger.Read (readJournalFile) import Hledger.Reports (postingsReport, defreportopts, PostingsReportItem) -import Data.Conduit (($=),($$), runResourceT) +import Data.Conduit (($=),($$)) +import Control.Monad.Trans.Resource (runResourceT) import qualified Data.Conduit.List as CL import Data.CSV.Conduit (fromCSV, defCSVSettings, CSV) @@ -65,9 +67,10 @@ acctReg :: String -> Journal -> AcctReg acctReg a j = AcctReg a 0 (snd . postingsReport defreportopts (Acct a) $ j) priToLine :: PostingsReportItem -> [T.Text] -priToLine (mds, p, mixa) = [T.empty, cord, date, num, name, memo, split, amt, bal] +priToLine (mday, mdesc, p, mixa) = [T.empty, cord, date, num, name, memo, split, amt, bal] where - (date, desc') = maybe (T.empty, "") (bimap (T.pack . show) id) mds + date = maybe T.empty (T.pack . show) mday + desc' = maybe "" id mdesc (c', desc) = parseDesc desc' cord = cordGuess (paccount p) (pamount p) num = T.pack c' @@ -92,7 +95,14 @@ convertJournalToRegisterCSV fp = do csv <- journalToRegisterCSV j return $ T.concat csv -journalToRegisterCSV :: (MonadUnsafeIO m, MonadThrow m, MonadIO m, CSV a [T.Text], MonadBaseControl IO m) => Journal -> m [a] +journalToRegisterCSV :: ( PrimMonad base, + MonadBase base m, + MonadThrow m, + MonadIO m, + CSV a [T.Text], + MonadBaseControl IO m) + => Journal + -> m [a] journalToRegisterCSV j = do let accts = journalAccountNamesUsed j precsv' = concatMap (\x -> arToLines $ acctReg x j) accts |