display non-simple commodity names with double-quotes

This ensures print's output remains parseable. The other commands also
double-quote them, for consistency, like c++ ledger.
This commit is contained in:
Simon Michael 2010-05-27 01:38:23 +00:00
parent 8257c98440
commit 586c824cac
3 changed files with 21 additions and 6 deletions

View File

@ -106,9 +106,10 @@ showAmount :: Amount -> String
showAmount (Amount (Commodity {symbol="AUTO"}) _ _) = "" -- can appear in an error message
showAmount a@(Amount (Commodity {symbol=sym,side=side,spaced=spaced}) _ pri) =
case side of
L -> printf "%s%s%s%s" sym space quantity price
R -> printf "%s%s%s%s" quantity space sym price
where
L -> printf "%s%s%s%s" sym' space quantity price
R -> printf "%s%s%s%s" quantity space sym' price
where
sym' = quoteCommoditySymbolIfNeeded sym
space = if spaced then " " else ""
quantity = showAmount' a
price = case pri of (Just pamt) -> " @ " ++ showMixedAmount pamt

View File

@ -16,6 +16,9 @@ import Data.Map ((!))
nonsimplecommoditychars = "0123456789-.@;\n \""
quoteCommoditySymbolIfNeeded s | any (`elem` nonsimplecommoditychars) s = "\"" ++ s ++ "\""
| otherwise = s
-- convenient amount and commodity constructors, for tests etc.
unknown = Commodity {symbol="", side=L,spaced=False,comma=False,precision=0}

View File

@ -7,7 +7,7 @@ bin/hledger -f- print
b
>>>2 /parse error.*unexpected "0"/
>>>= 1
# 2. with quotes
# 2. with quotes, ok; quotes appear in print output
bin/hledger -f- print
<<<
2010-04-05 x
@ -15,6 +15,17 @@ bin/hledger -f- print
b
>>>
2010/04/05 x
a 10 DE0002635307
b -10 DE0002635307
a 10 "DE0002635307"
b -10 "DE0002635307"
# 3. and in other reports too, I guess
bin/hledger -f- balance
<<<
2010-04-05 x
a 10 "DE0002635307"
b
>>>
10 "DE0002635307" a
-10 "DE0002635307" b
--------------------
0 "DE0002635307"