diff --git a/hledger-lib/Hledger/Data/Amount.hs b/hledger-lib/Hledger/Data/Amount.hs index ed0cc9fd3..27648614c 100644 --- a/hledger-lib/Hledger/Data/Amount.hs +++ b/hledger-lib/Hledger/Data/Amount.hs @@ -149,13 +149,6 @@ amountstyle = AmountStyle L False 0 (Just '.') Nothing ------------------------------------------------------------------------------- -- Amount -instance Show Price where - show NoPrice = "NoPrice" - show (UnitPrice a) = "\"@ " ++ showAmountWithoutPrice a ++ "..\"" - show (TotalPrice a) = "\"@@ " ++ showAmountWithoutPrice a ++ "..\"" - -deriving instance Show Amount - instance Num Amount where abs a@Amount{aquantity=q} = a{aquantity=abs q} signum a@Amount{aquantity=q} = a{aquantity=signum q} @@ -435,12 +428,6 @@ commodityValue j valuationdate c ------------------------------------------------------------------------------- -- MixedAmount -instance Show MixedAmount where - show - | debugLevel < 3 = intercalate "\\n" . lines . showMixedAmountWithoutPrice - -- debugLevel < 6 = intercalate "\\n" . lines . showMixedAmount - | otherwise = showMixedAmountDebug - instance Num MixedAmount where fromInteger i = Mixed [fromInteger i] negate (Mixed as) = Mixed $ map negate as diff --git a/hledger-lib/Hledger/Data/Posting.hs b/hledger-lib/Hledger/Data/Posting.hs index b092f1691..82515ad80 100644 --- a/hledger-lib/Hledger/Data/Posting.hs +++ b/hledger-lib/Hledger/Data/Posting.hs @@ -76,7 +76,6 @@ import Hledger.Data.AccountName import Hledger.Data.Dates (nulldate, spanContainsDate) -instance Show Posting where show = showPosting nullposting, posting :: Posting nullposting = Posting diff --git a/hledger-lib/Hledger/Data/Transaction.hs b/hledger-lib/Hledger/Data/Transaction.hs index ad4791760..08fc1dd5b 100644 --- a/hledger-lib/Hledger/Data/Transaction.hs +++ b/hledger-lib/Hledger/Data/Transaction.hs @@ -62,11 +62,6 @@ import Hledger.Data.Dates import Hledger.Data.Posting import Hledger.Data.Amount -instance Show Transaction where show = showTransactionUnelided - -instance Show TransactionModifier where - show t = "= " ++ T.unpack (tmquerytxt t) ++ "\n" ++ unlines (map show (tmpostings t)) - sourceFilePath :: GenericSourcePos -> FilePath sourceFilePath = \case GenericSourcePos fp _ _ -> fp diff --git a/hledger-lib/Hledger/Data/Types.hs b/hledger-lib/Hledger/Data/Types.hs index d1cc92459..04a9539a0 100644 --- a/hledger-lib/Hledger/Data/Types.hs +++ b/hledger-lib/Hledger/Data/Types.hs @@ -26,6 +26,7 @@ import Control.DeepSeq (NFData) import Data.Data import Data.Decimal import Data.Default +import Data.List (intercalate) import Text.Blaze (ToMarkup(..)) import qualified Data.Map as M import Data.Text (Text) @@ -128,7 +129,8 @@ instance ToMarkup Quantity -- | An amount's price (none, per unit, or total) in another commodity. -- Note the price should be a positive number, although this is not enforced. -data Price = NoPrice | UnitPrice Amount | TotalPrice Amount deriving (Eq,Ord,Typeable,Data,Generic) +data Price = NoPrice | UnitPrice Amount | TotalPrice Amount + deriving (Eq,Ord,Typeable,Data,Generic,Show) instance NFData Price @@ -145,7 +147,7 @@ instance NFData AmountStyle instance Show AmountStyle where show AmountStyle{..} = - printf "AmountStyle \"%s %s %s %s %s..\"" + printf "AmountStylePP \"%s %s %s %s %s..\"" (show ascommodityside) (show ascommodityspaced) (show asprecision) @@ -178,11 +180,11 @@ data Amount = Amount { aprice :: Price, -- ^ the (fixed) price for this amount, if any astyle :: AmountStyle, amultiplier :: Bool -- ^ amount is a multipier used in TransactionModifier postings - } deriving (Eq,Ord,Typeable,Data,Generic) + } deriving (Eq,Ord,Typeable,Data,Generic,Show) instance NFData Amount -newtype MixedAmount = Mixed [Amount] deriving (Eq,Ord,Typeable,Data,Generic) +newtype MixedAmount = Mixed [Amount] deriving (Eq,Ord,Typeable,Data,Generic,Show) instance NFData MixedAmount @@ -228,10 +230,27 @@ data Posting = Posting { instance NFData Posting -- The equality test for postings ignores the parent transaction's --- identity, to avoid infinite loops. +-- identity, to avoid recuring ad infinitum. +-- XXX could check that it's Just or Nothing. instance Eq Posting where (==) (Posting a1 b1 c1 d1 e1 f1 g1 h1 i1 _ _) (Posting a2 b2 c2 d2 e2 f2 g2 h2 i2 _ _) = a1==a2 && b1==b2 && c1==c2 && d1==d2 && e1==e2 && f1==f2 && g1==g2 && h1==h2 && i1==i2 +-- | Posting's show instance elides the parent transaction so as not to recurse forever. +instance Show Posting where + show Posting{..} = "PostingPP {" ++ intercalate ", " [ + ("pdate=" ++ show (show pdate)) + ,("pdate2=" ++ show (show pdate2)) + ,("pstatus=" ++ show (show pstatus)) + ,("paccount=" ++ show paccount) + ,("pamount=" ++ show pamount) + ,("pcomment=" ++ show pcomment) + ,("ptype=" ++ show ptype) + ,("ptags=" ++ show ptags) + ,("pbalanceassertion=" ++ show pbalanceassertion) + ,("ptransaction=" ++ show (const "" <$> ptransaction)) + ,("porigin=" ++ show porigin) + ] ++ "}" + -- TODO: needs renaming, or removal if no longer needed. See also TextPosition in Hledger.UI.Editor -- | The position of parse errors (eg), like parsec's SourcePos but generic. data GenericSourcePos = GenericSourcePos FilePath Int Int -- ^ file path, 1-based line number and 1-based column number. @@ -256,23 +275,23 @@ data Transaction = Transaction { ttags :: [Tag], -- ^ tag names and values, extracted from the comment tpostings :: [Posting], -- ^ this transaction's postings tpreceding_comment_lines :: Text -- ^ any comment lines immediately preceding this transaction - } deriving (Eq,Typeable,Data,Generic) + } deriving (Eq,Typeable,Data,Generic,Show) instance NFData Transaction data TransactionModifier = TransactionModifier { tmquerytxt :: Text, tmpostings :: [Posting] - } deriving (Eq,Typeable,Data,Generic) + } deriving (Eq,Typeable,Data,Generic,Show) instance NFData TransactionModifier --- ^ A periodic transaction rule, describing a transaction that recurs. nulltransactionmodifier = TransactionModifier{ tmquerytxt = "" ,tmpostings = [] } +-- | A periodic transaction rule, describing a transaction that recurs. data PeriodicTransaction = PeriodicTransaction { ptperiodexpr :: Text, -- ^ the period expression as written ptinterval :: Interval, -- ^ the interval at which this transaction recurs