mirror of
https://github.com/simonmichael/hledger.git
synced 2024-09-20 02:37:12 +03:00
commodity cleanup
This commit is contained in:
parent
9f8e0c42fe
commit
93ced249b3
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user