diff --git a/hledger-lib/Hledger/Read.hs b/hledger-lib/Hledger/Read.hs index 5d3094216..e7a7df639 100644 --- a/hledger-lib/Hledger/Read.hs +++ b/hledger-lib/Hledger/Read.hs @@ -204,6 +204,11 @@ samplejournal = readJournal' $ unlines ," assets:bank:checking $1" ," income:salary" ,"" + ,"comment" + ,"multi line comment here" + ,"for testing purposes" + ,"end comment" + ,"" ,"2008/06/01 gift" ," assets:bank:checking $1" ," income:gifts" diff --git a/hledger-lib/Hledger/Read/JournalReader.hs b/hledger-lib/Hledger/Read/JournalReader.hs index 13e72fea6..a3f8c25c5 100644 --- a/hledger-lib/Hledger/Read/JournalReader.hs +++ b/hledger-lib/Hledger/Read/JournalReader.hs @@ -164,6 +164,7 @@ journal = do , liftM (return . addPeriodicTransaction) periodictransaction , liftM (return . addHistoricalPrice) historicalpricedirective , emptyorcommentlinep >> return (return id) + , multilinecommentp >> return (return id) ] "journal transaction or directive" -- cf http://ledger-cli.org/3.0/doc/ledger3.html#Command-Directives @@ -847,6 +848,15 @@ test_numberp = do -- comment parsers +multilinecommentp :: GenParser Char JournalContext () +multilinecommentp = do + string "comment" >> newline + go + where + go = try (string "end comment" >> newline >> return ()) + <|> (anyLine >> go) + anyLine = anyChar `manyTill` newline + emptyorcommentlinep :: GenParser Char JournalContext () emptyorcommentlinep = do many spacenonewline >> (comment <|> (many spacenonewline >> newline >> return ""))