mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-29 05:11:33 +03:00
4141067428
* Replace Parsec with Megaparsec (see #289) This builds upon PR #289 by @rasendubi * Revert renaming of parseWithState to parseWithCtx * Fix doctests * Update for Megaparsec 5 * Specialize parser to improve performance * Pretty print errors * Swap StateT and ParsecT This is necessary to get the correct backtracking behavior, i.e. discard state changes if the parsing fails.
55 lines
1.2 KiB
Plaintext
55 lines
1.2 KiB
Plaintext
# 1. posting dates can be set with a tag. Also the year can be
|
|
# inferred from the transaction. If there are multiple tags, the first
|
|
# is used. Date separators /-. are allowed.
|
|
hledger -f- register
|
|
<<<
|
|
2000/1/2
|
|
a 0 ; date: 3/4, date: 4-5, date:6.7
|
|
>>> /^2000\/03\/04/
|
|
>>>=0
|
|
|
|
# 2. If the date: or date2: tags do not have a valid simple date
|
|
# value, there should be a corresponding error at the right position
|
|
hledger -f- register
|
|
<<<
|
|
comment
|
|
Journal comment to prevent this being parsed as a timedot file
|
|
end comment
|
|
|
|
2000/1/1
|
|
a 0 ; date: 3.31
|
|
|
|
2000/1/2
|
|
b 0
|
|
; date: 3.32
|
|
|
|
>>>2 /10:19/
|
|
>>>=1
|
|
|
|
# 3. Ledger's bracketed date syntax is also supported: `[DATE]`,
|
|
# `[DATE=DATE2]` or `[=DATE2]`. This is equivalent to using `date:` or
|
|
# `date2:` tags.
|
|
hledger -f- register --date2
|
|
<<<
|
|
2000/1/2
|
|
a 0 ; [=3-4]
|
|
>>> /^2000\/03\/04/
|
|
>>>=0
|
|
|
|
# 4. Date parsing and error reporting activates for square brackets
|
|
# containing only `0123456789/-.=` characters.
|
|
hledger -f- register
|
|
<<<
|
|
comment
|
|
Journal comment to prevent this being parsed as a timedot file
|
|
end comment
|
|
|
|
2000/1/2
|
|
a 0 ; [3/4 ] space, causes this to be ignored
|
|
|
|
2000/1/2
|
|
b 0 ; [1/1=1/2/3/4] bad second date, should error
|
|
|
|
>>>2 /9:25/
|
|
>>>=1
|