commodity cleanup

This commit is contained in:
Simon Michael 2008-10-18 19:30:07 +00:00
parent 9f8e0c42fe
commit 93ced249b3

View File

@ -1,9 +1,9 @@
{-| {-|
A 'Commodity' is a symbol representing a currency or some other kind of 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 thing we are tracking, and some display preferences that tell how to
of the commodity. For the moment, commodities also include a hard-coded display 'Amount's of the commodity - is the symbol on the left or right,
conversion rate relative to the dollar. are thousands separated by comma, significant decimal places and so on.
-} -}
module Ledger.Commodity module Ledger.Commodity
@ -13,11 +13,9 @@ import Ledger.Utils
import Ledger.Types 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. -- convenient amount and commodity constructors, for tests etc.
unknown = Commodity {symbol="", side=L,spaced=False,comma=False,precision=0}
dollar = Commodity {symbol="$", side=L,spaced=False,comma=False,precision=2} dollar = Commodity {symbol="$", side=L,spaced=False,comma=False,precision=2}
euro = Commodity {symbol="EUR",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} pound = Commodity {symbol="£", side=L,spaced=False,comma=False,precision=2}
@ -30,13 +28,13 @@ hours n = Amount hour n Nothing
defaultcommodities = [dollar, euro, pound, hour, unknown] defaultcommodities = [dollar, euro, pound, hour, unknown]
defaultcommoditiesmap :: Map.Map String Commodity -- | Look up one of the hard-coded default commodities. For use in tests.
defaultcommoditiesmap = Map.fromList [(symbol c :: String, c :: Commodity) | c <- defaultcommodities]
comm :: String -> Commodity 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 :: Commodity -> Commodity -> Double
conversionRate oldc newc = 1 conversionRate oldc newc = 1