mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-08 07:09:28 +03:00
parsing: N, tag, end tag are now ignored; ledger sample.dat parses
This commit is contained in:
parent
6977a0eecb
commit
57c537de41
@ -92,6 +92,9 @@ ledgerFile = do items <- many ledgerItem
|
||||
, liftM (return . addPeriodicTransaction) ledgerPeriodicTransaction
|
||||
, liftM (return . addHistoricalPrice) ledgerHistoricalPrice
|
||||
, ledgerDefaultYear
|
||||
, ledgerIgnoredPrice
|
||||
, ledgerTagDirective
|
||||
, ledgerEndTagDirective
|
||||
, emptyLine >> return (return id)
|
||||
, liftM (return . addTimeLogEntry) timelogentry
|
||||
]
|
||||
@ -295,6 +298,28 @@ ledgerHistoricalPrice = do
|
||||
restofline
|
||||
return $ HistoricalPrice date symbol price
|
||||
|
||||
ledgerIgnoredPrice :: GenParser Char LedgerFileCtx (ErrorT String IO (Journal -> Journal))
|
||||
ledgerIgnoredPrice = do
|
||||
char 'N' <?> "ignored-price commodity"
|
||||
many1 spacenonewline
|
||||
commoditysymbol
|
||||
restofline
|
||||
return $ return id
|
||||
|
||||
ledgerTagDirective :: GenParser Char LedgerFileCtx (ErrorT String IO (Journal -> Journal))
|
||||
ledgerTagDirective = do
|
||||
string "tag" <?> "tag directive"
|
||||
many1 spacenonewline
|
||||
_ <- many1 nonspace
|
||||
restofline
|
||||
return $ return id
|
||||
|
||||
ledgerEndTagDirective :: GenParser Char LedgerFileCtx (ErrorT String IO (Journal -> Journal))
|
||||
ledgerEndTagDirective = do
|
||||
string "end tag" <?> "end tag directive"
|
||||
restofline
|
||||
return $ return id
|
||||
|
||||
-- like ledgerAccountBegin, updates the LedgerFileCtx
|
||||
ledgerDefaultYear :: GenParser Char LedgerFileCtx (ErrorT String IO (Journal -> Journal))
|
||||
ledgerDefaultYear = do
|
||||
@ -635,6 +660,17 @@ tests_Parse = TestList [
|
||||
assertParseEqual (parseWithCtx emptyCtx postingamount " $1.")
|
||||
(Mixed [Amount Commodity {symbol="$",side=L,spaced=False,comma=False,precision=0} 1 Nothing])
|
||||
|
||||
,"ledgerIgnoredPrice" ~: do
|
||||
assertParse (parseWithCtx emptyCtx ledgerIgnoredPrice "N $\n")
|
||||
|
||||
,"ledgerTagDirective" ~: do
|
||||
assertParse (parseWithCtx emptyCtx ledgerTagDirective "tag foo\n")
|
||||
assertParse (parseWithCtx emptyCtx ledgerTagDirective "tag foo \n")
|
||||
|
||||
,"ledgerEndTagDirective" ~: do
|
||||
assertParse (parseWithCtx emptyCtx ledgerEndTagDirective "end tag\n")
|
||||
assertParse (parseWithCtx emptyCtx ledgerEndTagDirective "end tag \n")
|
||||
|
||||
]
|
||||
|
||||
price1_str = "P 2004/05/01 XYZ $55.00\n"
|
||||
|
57
tests/parse-ledger-sample.test
Normal file
57
tests/parse-ledger-sample.test
Normal file
@ -0,0 +1,57 @@
|
||||
-f-
|
||||
<<<
|
||||
; -*- ledger -*-
|
||||
|
||||
N $
|
||||
|
||||
= /^Expenses:Books/
|
||||
(Liabilities:Taxes) -0.10
|
||||
|
||||
~ Monthly
|
||||
Assets:Bank:Checking $500.00
|
||||
Income:Salary
|
||||
|
||||
~ Yearly
|
||||
Expenses:Donations $100.00
|
||||
Assets:Bank:Checking
|
||||
|
||||
2004/05/01 * Checking balance
|
||||
Assets:Bank:Checking $1,000.00
|
||||
Equity:Opening Balances
|
||||
|
||||
2004/05/03=2004/05/01 * Investment balance
|
||||
Assets:Brokerage 50 AAPL @ $30.00
|
||||
Equity:Opening Balances
|
||||
|
||||
2004/05/14 * Páy dày
|
||||
Assets:Bank:Checking 500.00€
|
||||
Income:Salary
|
||||
|
||||
2004/05/14 * Another dày in which there is Páying
|
||||
Asséts:Bánk:Chécking:Asséts:Bánk:Chécking $500.00
|
||||
Income:Salary
|
||||
|
||||
2004/05/14 * Another dày in which there is Páying
|
||||
Русский язык:Активы:Русский язык:Русский язык $1000.00
|
||||
Income:Salary
|
||||
|
||||
tag foo
|
||||
|
||||
2004/05/27 Book Store
|
||||
Expenses:Books $20.00
|
||||
Expenses:Cards $40.00
|
||||
Expenses:Docs $30.00
|
||||
Liabilities:MasterCard
|
||||
|
||||
end tag
|
||||
|
||||
2004/05/27 (100) Credit card company
|
||||
; This is an xact note!
|
||||
; Sample: Value
|
||||
Liabilities:MasterCard $20.00
|
||||
; This is a posting note!
|
||||
; Sample: Another Value
|
||||
; :MyTag:
|
||||
Assets:Bank:Checking
|
||||
; :AnotherTag:
|
||||
>>>= 0
|
Loading…
Reference in New Issue
Block a user