Added a simple 'showMarketPrice' function to show market price directives in a journal-compatible way (#505)
* added showMarketPrice and Hledger.Data.MarketPrice module * showMarketPrice implemented using showDate * attempted to add tests to Hledger.Data.MarketPrice * moved MarketPrice test to Hledger.Read.JournalReader; fixed documentation on MarketPrice; added MarketPrice module to package.yaml
This commit is contained in:
parent
3564c929e1
commit
6bccb847d5
@ -15,6 +15,7 @@ module Hledger.Data (
|
|||||||
module Hledger.Data.Dates,
|
module Hledger.Data.Dates,
|
||||||
module Hledger.Data.Journal,
|
module Hledger.Data.Journal,
|
||||||
module Hledger.Data.Ledger,
|
module Hledger.Data.Ledger,
|
||||||
|
module Hledger.Data.MarketPrice,
|
||||||
module Hledger.Data.Period,
|
module Hledger.Data.Period,
|
||||||
module Hledger.Data.Posting,
|
module Hledger.Data.Posting,
|
||||||
module Hledger.Data.RawOptions,
|
module Hledger.Data.RawOptions,
|
||||||
@ -34,6 +35,7 @@ import Hledger.Data.Commodity
|
|||||||
import Hledger.Data.Dates
|
import Hledger.Data.Dates
|
||||||
import Hledger.Data.Journal
|
import Hledger.Data.Journal
|
||||||
import Hledger.Data.Ledger
|
import Hledger.Data.Ledger
|
||||||
|
import Hledger.Data.MarketPrice
|
||||||
import Hledger.Data.Period
|
import Hledger.Data.Period
|
||||||
import Hledger.Data.Posting
|
import Hledger.Data.Posting
|
||||||
import Hledger.Data.RawOptions
|
import Hledger.Data.RawOptions
|
||||||
@ -50,6 +52,7 @@ tests_Hledger_Data = TestList
|
|||||||
,tests_Hledger_Data_Amount
|
,tests_Hledger_Data_Amount
|
||||||
,tests_Hledger_Data_Commodity
|
,tests_Hledger_Data_Commodity
|
||||||
,tests_Hledger_Data_Journal
|
,tests_Hledger_Data_Journal
|
||||||
|
,tests_Hledger_Data_MarketPrice
|
||||||
,tests_Hledger_Data_Ledger
|
,tests_Hledger_Data_Ledger
|
||||||
,tests_Hledger_Data_Posting
|
,tests_Hledger_Data_Posting
|
||||||
-- ,tests_Hledger_Data_RawOptions
|
-- ,tests_Hledger_Data_RawOptions
|
||||||
|
|||||||
32
hledger-lib/Hledger/Data/MarketPrice.hs
Normal file
32
hledger-lib/Hledger/Data/MarketPrice.hs
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{-|
|
||||||
|
|
||||||
|
A 'MarketPrice' represents a historical exchange rate between two
|
||||||
|
commodities. (Ledger calls them historical prices.) For example, prices
|
||||||
|
published by a stock exchange or the foreign exchange market. Some
|
||||||
|
commands (balance, currently) can use this information to show the market
|
||||||
|
value of things at a given date.
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
{-# LANGUAGE OverloadedStrings, LambdaCase #-}
|
||||||
|
|
||||||
|
module Hledger.Data.MarketPrice
|
||||||
|
where
|
||||||
|
import qualified Data.Text as T
|
||||||
|
import Test.HUnit
|
||||||
|
|
||||||
|
import Hledger.Data.Amount
|
||||||
|
import Hledger.Data.Dates
|
||||||
|
import Hledger.Data.Types
|
||||||
|
|
||||||
|
-- | Get the string representation of an market price, based on its
|
||||||
|
-- commodity's display settings.
|
||||||
|
showMarketPrice :: MarketPrice -> String
|
||||||
|
showMarketPrice mp = unwords
|
||||||
|
[ "P"
|
||||||
|
, showDate (mpdate mp)
|
||||||
|
, T.unpack (mpcommodity mp)
|
||||||
|
, (showAmount . setAmountPrecision maxprecision) (mpamount mp)
|
||||||
|
]
|
||||||
|
|
||||||
|
tests_Hledger_Data_MarketPrice = TestList []
|
||||||
@ -624,6 +624,12 @@ test_postingp = do
|
|||||||
|
|
||||||
tests_Hledger_Read_JournalReader = TestList $ concat [
|
tests_Hledger_Read_JournalReader = TestList $ concat [
|
||||||
-- test_numberp
|
-- test_numberp
|
||||||
|
[
|
||||||
|
"showParsedMarketPrice" ~: do
|
||||||
|
let mp = parseWithState mempty marketpricedirectivep "P 2017/01/30 BTC $922.83\n"
|
||||||
|
mpString = (fmap . fmap) showMarketPrice mp
|
||||||
|
mpString `is` (Just (Right "P 2017/01/30 BTC $922.83"))
|
||||||
|
]
|
||||||
]
|
]
|
||||||
|
|
||||||
{- old hunit tests
|
{- old hunit tests
|
||||||
|
|||||||
@ -110,6 +110,7 @@ library
|
|||||||
Hledger.Data.Dates
|
Hledger.Data.Dates
|
||||||
Hledger.Data.Journal
|
Hledger.Data.Journal
|
||||||
Hledger.Data.Ledger
|
Hledger.Data.Ledger
|
||||||
|
Hledger.Data.MarketPrice
|
||||||
Hledger.Data.Period
|
Hledger.Data.Period
|
||||||
Hledger.Data.StringFormat
|
Hledger.Data.StringFormat
|
||||||
Hledger.Data.Posting
|
Hledger.Data.Posting
|
||||||
|
|||||||
@ -91,6 +91,7 @@ library:
|
|||||||
- Hledger.Data.Dates
|
- Hledger.Data.Dates
|
||||||
- Hledger.Data.Journal
|
- Hledger.Data.Journal
|
||||||
- Hledger.Data.Ledger
|
- Hledger.Data.Ledger
|
||||||
|
- Hledger.Data.MarketPrice
|
||||||
- Hledger.Data.Period
|
- Hledger.Data.Period
|
||||||
- Hledger.Data.StringFormat
|
- Hledger.Data.StringFormat
|
||||||
- Hledger.Data.Posting
|
- Hledger.Data.Posting
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user