Fixed TimeLog handling and certain blank lines
This commit is contained in:
parent
958c4eb891
commit
0be862f760
@ -48,7 +48,7 @@ emptyCtx = Ctx { ctxYear = Nothing, ctxCommod = Nothing, ctxAccount = [] }
|
|||||||
|
|
||||||
parseLedger :: FilePath -> String -> ErrorT String IO RawLedger
|
parseLedger :: FilePath -> String -> ErrorT String IO RawLedger
|
||||||
parseLedger inname intxt = case runParser ledgerFile emptyCtx inname intxt of
|
parseLedger inname intxt = case runParser ledgerFile emptyCtx inname intxt of
|
||||||
Right m -> m `ap` (return rawLedgerEmpty)
|
Right m -> liftM rawLedgerConvertTimeLog $ m `ap` (return rawLedgerEmpty)
|
||||||
Left err -> throwError $ show err
|
Left err -> throwError $ show err
|
||||||
|
|
||||||
ledgerFile :: GenParser Char LedgerFileCtx (ErrorT String IO (RawLedger -> RawLedger))
|
ledgerFile :: GenParser Char LedgerFileCtx (ErrorT String IO (RawLedger -> RawLedger))
|
||||||
@ -59,8 +59,8 @@ ledgerFile = do entries <- many1 ledgerAnyEntry
|
|||||||
, liftM (return . addEntry) ledgerEntry
|
, liftM (return . addEntry) ledgerEntry
|
||||||
, liftM (return . addModifierEntry) ledgerModifierEntry
|
, liftM (return . addModifierEntry) ledgerModifierEntry
|
||||||
, liftM (return . addPeriodicEntry) ledgerPeriodicEntry
|
, liftM (return . addPeriodicEntry) ledgerPeriodicEntry
|
||||||
, blankline >> return (return id)
|
, emptyLine >> return (return id)
|
||||||
, commentline >> return (return id)
|
, liftM (return . addTimeLogEntry) timelogentry
|
||||||
]
|
]
|
||||||
|
|
||||||
ledgerInclude :: GenParser Char LedgerFileCtx (ErrorT String IO (RawLedger -> RawLedger))
|
ledgerInclude :: GenParser Char LedgerFileCtx (ErrorT String IO (RawLedger -> RawLedger))
|
||||||
@ -189,15 +189,11 @@ i, o, b, h
|
|||||||
See "Tests" for sample data.
|
See "Tests" for sample data.
|
||||||
-}
|
-}
|
||||||
|
|
||||||
blankline :: GenParser Char st String
|
emptyLine :: GenParser Char st ()
|
||||||
blankline = (do { s <- many spacenonewline; newline; return s }) <?> "blank line"
|
emptyLine = do many spacenonewline
|
||||||
|
optional $ char ';' >> spacenonewline >> many (noneOf "\n")
|
||||||
commentline :: GenParser Char st String
|
newline
|
||||||
commentline = do
|
return ()
|
||||||
many spacenonewline
|
|
||||||
char ';' <?> "comment line"
|
|
||||||
l <- restofline
|
|
||||||
return $ ";" ++ l
|
|
||||||
|
|
||||||
ledgercomment :: GenParser Char st String
|
ledgercomment :: GenParser Char st String
|
||||||
ledgercomment =
|
ledgercomment =
|
||||||
@ -453,7 +449,6 @@ timelog = do
|
|||||||
|
|
||||||
timelogentry :: GenParser Char st TimeLogEntry
|
timelogentry :: GenParser Char st TimeLogEntry
|
||||||
timelogentry = do
|
timelogentry = do
|
||||||
many (commentline <|> blankline)
|
|
||||||
code <- oneOf "bhioO"
|
code <- oneOf "bhioO"
|
||||||
many1 spacenonewline
|
many1 spacenonewline
|
||||||
datetime <- ledgerdatetime
|
datetime <- ledgerdatetime
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import Ledger.Amount
|
|||||||
import Ledger.Entry
|
import Ledger.Entry
|
||||||
import Ledger.Transaction
|
import Ledger.Transaction
|
||||||
import Ledger.RawTransaction
|
import Ledger.RawTransaction
|
||||||
|
import Ledger.TimeLog
|
||||||
|
|
||||||
|
|
||||||
instance Show RawLedger where
|
instance Show RawLedger where
|
||||||
@ -125,3 +126,9 @@ rawLedgerAmounts = map amount . rawLedgerTransactions
|
|||||||
rawLedgerPrecisions :: RawLedger -> [Int]
|
rawLedgerPrecisions :: RawLedger -> [Int]
|
||||||
rawLedgerPrecisions = map precision . rawLedgerCommodities
|
rawLedgerPrecisions = map precision . rawLedgerCommodities
|
||||||
|
|
||||||
|
rawLedgerConvertTimeLog :: RawLedger -> RawLedger
|
||||||
|
rawLedgerConvertTimeLog l0 = l0 { entries = convertedTimeLog ++ entries l0
|
||||||
|
, open_timelog_entries = []
|
||||||
|
}
|
||||||
|
where convertedTimeLog = entriesFromTimeLogEntries $ open_timelog_entries l0
|
||||||
|
|
||||||
|
|||||||
@ -14,17 +14,12 @@ import Ledger.Dates
|
|||||||
import Ledger.Commodity
|
import Ledger.Commodity
|
||||||
import Ledger.Amount
|
import Ledger.Amount
|
||||||
|
|
||||||
|
|
||||||
instance Show TimeLogEntry where
|
instance Show TimeLogEntry where
|
||||||
show t = printf "%s %s %s" (show $ tlcode t) (show $ tldatetime t) (tlcomment t)
|
show t = printf "%s %s %s" (show $ tlcode t) (show $ tldatetime t) (tlcomment t)
|
||||||
|
|
||||||
instance Show TimeLog where
|
instance Show TimeLog where
|
||||||
show tl = printf "TimeLog with %d entries" $ length $ timelog_entries tl
|
show tl = printf "TimeLog with %d entries" $ length $ timelog_entries tl
|
||||||
|
|
||||||
-- | Convert a time log to a ledger.
|
|
||||||
ledgerFromTimeLog :: TimeLog -> RawLedger
|
|
||||||
ledgerFromTimeLog tl = RawLedger [] [] (entriesFromTimeLogEntries $ timelog_entries tl) ""
|
|
||||||
|
|
||||||
-- | Convert time log entries to ledger entries.
|
-- | Convert time log entries to ledger entries.
|
||||||
entriesFromTimeLogEntries :: [TimeLogEntry] -> [Entry]
|
entriesFromTimeLogEntries :: [TimeLogEntry] -> [Entry]
|
||||||
entriesFromTimeLogEntries [] = []
|
entriesFromTimeLogEntries [] = []
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user