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