module Penny.Copper.Interface where
import qualified Penny.Lincoln as L
import qualified Data.Text as X
import qualified Penny.Steel.Sums as S
data ParsedTopLine = ParsedTopLine
{ ptlDateTime :: L.DateTime
, ptlNumber :: Maybe L.Number
, ptlFlag :: Maybe L.Flag
, ptlPayee :: Maybe L.Payee
, ptlMemo :: Maybe (L.Memo, L.TopMemoLine)
, ptlTopLineLine :: L.TopLineLine
} deriving (Show)
toTopLineCore :: ParsedTopLine -> L.TopLineCore
toTopLineCore (ParsedTopLine dt nu fl pa me _)
= L.TopLineCore dt nu fl pa (fmap fst me)
type ParsedTxn = (ParsedTopLine , L.Ents (L.PostingCore, L.PostingLine))
data BlankLine = BlankLine
deriving (Eq, Show)
newtype Comment = Comment { unComment :: X.Text }
deriving (Eq, Show)
type ParsedItem =
S.S4 ParsedTxn L.PricePoint Comment BlankLine
type LedgerItem =
S.S4 L.Transaction L.PricePoint Comment BlankLine
type Parser
= String
-> IO (L.Filename, [ParsedItem])
stripMeta
:: LedgerItem
-> S.S4 (L.TopLineCore, L.Ents L.PostingCore)
L.PricePoint
Comment
BlankLine
stripMeta = S.mapS4 f id id id where
f t = let (tl, es) = L.unTransaction t
in (L.tlCore tl, fmap L.pdCore es)