From efe7c7a0292a3204a75ceca49d831fe8240828ad Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Sat, 6 Sep 2014 09:20:22 -0700 Subject: [PATCH] journal: dates should be followed by whitespace or newline --- hledger-lib/Hledger/Read/JournalReader.hs | 3 ++- tests/journal/dates.test | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/hledger-lib/Hledger/Read/JournalReader.hs b/hledger-lib/Hledger/Read/JournalReader.hs index 70a15115a..43a4dc786 100644 --- a/hledger-lib/Hledger/Read/JournalReader.hs +++ b/hledger-lib/Hledger/Read/JournalReader.hs @@ -327,6 +327,7 @@ transaction = do sourcepos <- getPosition date <- datep "transaction" edate <- optionMaybe (secondarydatep date) "secondary date" + lookAhead (spacenonewline <|> newline) "whitespace or newline" status <- status "cleared flag" code <- codep "transaction code" description <- descriptionp >>= return . strip @@ -492,7 +493,7 @@ secondarydatep primarydate = do return edate status :: GenParser Char JournalContext Bool -status = try (do { many spacenonewline; (char '*' <|> char '!') "status"; return True } ) <|> return False +status = try (do { many1 spacenonewline; (char '*' <|> char '!') "status"; return True } ) <|> return False codep :: GenParser Char JournalContext String codep = try (do { many1 spacenonewline; char '(' "codep"; code <- anyChar `manyTill` char ')'; return code } ) <|> return "" diff --git a/tests/journal/dates.test b/tests/journal/dates.test index eac3b6998..9ac82f9bf 100644 --- a/tests/journal/dates.test +++ b/tests/journal/dates.test @@ -35,3 +35,17 @@ hledgerdev -f- print b >>>2 /bad date/ >>>= 1 +# 5. dates should be followed by whitespace or newline +hledgerdev -f- print +<<< +2015/9/6: + a 0 +>>>2 /unexpected ":"/ +>>>= 1 +# 6. +hledgerdev -f- print +<<< +2015/9/6=9/6* x + a 0 +>>>2 /unexpected "*"/ +>>>= 1