summaryrefslogtreecommitdiff
path: root/Hledger/RegisterCSV.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Hledger/RegisterCSV.hs')
-rw-r--r--Hledger/RegisterCSV.hs22
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