diff --git a/hledger-lib/Hledger/Data/Transaction.hs b/hledger-lib/Hledger/Data/Transaction.hs index 1c6687282..549f77415 100644 --- a/hledger-lib/Hledger/Data/Transaction.hs +++ b/hledger-lib/Hledger/Data/Transaction.hs @@ -93,7 +93,7 @@ showTransactionUnelided = showTransaction' False showTransaction' :: Bool -> Transaction -> String showTransaction' elide t = - unlines $ [description] ++ showpostings (tpostings t) ++ [""] + unlines $ [description] ++ metadata ++ showpostings (tpostings t) ++ [""] where description = concat [date, status, code, desc, comment] date = showdate (tdate t) ++ maybe "" showedate (teffectivedate t) @@ -103,6 +103,8 @@ showTransaction' elide t = code = if length (tcode t) > 0 then printf " (%s)" $ tcode t else "" desc = if null d then "" else " " ++ d where d = tdescription t comment = if null c then "" else " ; " ++ c where c = tcomment t + metadata = if null md then [] else showmetadata md where md = tmetadata t + showmetadata md = map (\(k,v) -> " ; " ++ k++":"++v) md showpostings ps | elide && length ps > 1 && isTransactionBalanced Nothing t -- imprecise balanced check = map showposting (init ps) ++ [showpostingnoamt (last ps)] diff --git a/hledger-lib/Hledger/Read/JournalReader.hs b/hledger-lib/Hledger/Read/JournalReader.hs index c60d4ee0a..d5f40afee 100644 --- a/hledger-lib/Hledger/Read/JournalReader.hs +++ b/hledger-lib/Hledger/Read/JournalReader.hs @@ -415,7 +415,7 @@ ledgercode :: GenParser Char JournalContext String ledgercode = try (do { many1 spacenonewline; char '(' "code"; code <- anyChar `manyTill` char ')'; return code } ) <|> return "" ledgermetadata :: GenParser Char JournalContext [(String,String)] -ledgermetadata = many ledgermetadataline +ledgermetadata = many $ try ledgermetadataline -- a comment line containing a metadata declaration, eg: -- ; name: value diff --git a/tests/metadata.test b/tests/metadata.test index ca459ce31..7e6498d09 100644 --- a/tests/metadata.test +++ b/tests/metadata.test @@ -13,6 +13,8 @@ bin/hledger -f - print ; non-metadata: >>> 2010/01/01 + ; txndata1:txn val 1 + ; txndata2:txn val 2 a 1 b -1