lib: tweak whitespace parsing for better parse errors

- expands the set of expected tokens when e.g. parsing the invalid
  posting `account  $1 a`
- whitespace can affect parse errors because of the longest match rule
  where errors that occur later take precedence over those that occur
  earlier
This commit is contained in:
Alex Chen 2018-06-20 19:52:49 -06:00
parent ed0106b209
commit 9674f2a8cc

View File

@ -523,6 +523,7 @@ test_spaceandamountormissingp = do
amountp :: JournalParser m Amount
amountp = label "amount" $ do
amount <- amountwithoutpricep
lift $ skipMany spacenonewline
price <- priceamountp
pure $ amount { aprice = price }
@ -657,7 +658,7 @@ simplecommoditysymbolp = takeWhile1P Nothing (not . isNonsimpleCommodityChar)
priceamountp :: JournalParser m Price
priceamountp = option NoPrice $ do
try $ lift (skipMany spacenonewline) *> char '@'
char '@'
priceConstructor <- char '@' *> pure TotalPrice <|> pure UnitPrice
lift (skipMany spacenonewline)