hledger/examples/onelinecsv.hs
2017-07-01 17:29:09 +01:00

34 lines
765 B
Haskell
Executable File

#!/usr/bin/env stack
{- stack runghc
--package hledger-lib
--package text
-}
{- example of generating one CSV line per txn. assumes hledger-lib 1.0+ -}
import Control.Monad
import qualified Data.Text as T
import Data.List
import Hledger
main :: IO ()
main = do
Right j <- readJournalFile Nothing Nothing False "examples/sample.journal"
putStrLn $ intercalate ", " $ [
"date"
,"description"
,"account1"
,"amount1"
,"account2"
,"amount2"
]
forM_ (jtxns j) $ \t -> do
let (p1:p2:_) = tpostings t
putStrLn $ intercalate ", " $ map quoteIfNeeded [
show $ tdate t
,T.unpack $ tdescription t
,T.unpack $ paccount p1
,show $ pamount p1
,T.unpack $ paccount p2
,show $ pamount p2
]