From 93ced249b369b352f2f1df476e911125e7f1406f Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Sat, 18 Oct 2008 19:30:07 +0000 Subject: [PATCH] commodity cleanup --- Ledger/Commodity.hs | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/Ledger/Commodity.hs b/Ledger/Commodity.hs index 8de407e5f..056f1224e 100644 --- a/Ledger/Commodity.hs +++ b/Ledger/Commodity.hs @@ -1,9 +1,9 @@ {-| A 'Commodity' is a symbol representing a currency or some other kind of -thing we are tracking, and some settings that tell how to display amounts -of the commodity. For the moment, commodities also include a hard-coded -conversion rate relative to the dollar. +thing we are tracking, and some display preferences that tell how to +display 'Amount's of the commodity - is the symbol on the left or right, +are thousands separated by comma, significant decimal places and so on. -} module Ledger.Commodity @@ -13,15 +13,13 @@ import Ledger.Utils import Ledger.Types --- for nullamt, autoamt, etc. -unknown = Commodity {symbol="",side=L,spaced=False,comma=False,precision=0} - -- convenient amount and commodity constructors, for tests etc. -dollar = Commodity {symbol="$",side=L,spaced=False,comma=False,precision=2} +unknown = Commodity {symbol="", side=L,spaced=False,comma=False,precision=0} +dollar = Commodity {symbol="$", side=L,spaced=False,comma=False,precision=2} euro = Commodity {symbol="EUR",side=L,spaced=False,comma=False,precision=2} -pound = Commodity {symbol="£",side=L,spaced=False,comma=False,precision=2} -hour = Commodity {symbol="h",side=R,spaced=False,comma=False,precision=1} +pound = Commodity {symbol="£", side=L,spaced=False,comma=False,precision=2} +hour = Commodity {symbol="h", side=R,spaced=False,comma=False,precision=1} dollars n = Amount dollar n Nothing euros n = Amount euro n Nothing @@ -30,13 +28,13 @@ hours n = Amount hour n Nothing defaultcommodities = [dollar, euro, pound, hour, unknown] -defaultcommoditiesmap :: Map.Map String Commodity -defaultcommoditiesmap = Map.fromList [(symbol c :: String, c :: Commodity) | c <- defaultcommodities] - +-- | Look up one of the hard-coded default commodities. For use in tests. comm :: String -> Commodity -comm symbol = Map.findWithDefault (error "commodity lookup failed") symbol defaultcommoditiesmap +comm sym = fromMaybe + (error "commodity lookup failed") + $ find (\(Commodity{symbol=s}) -> s==sym) defaultcommodities --- | Find the conversion rate between two commodities. +-- | Find the conversion rate between two commodities. Currently returns 1. conversionRate :: Commodity -> Commodity -> Double conversionRate oldc newc = 1