dev: lens: Introduce lenses for InputOpts and BalancingOpts.

This commit is contained in:
Stephen Morgan 2021-08-08 18:03:46 +10:00 committed by Simon Michael
parent c784da3d0c
commit 435ec992f9
3 changed files with 19 additions and 3 deletions

View File

@ -9,11 +9,12 @@ tags.
{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE LambdaCase #-} {-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE Rank2Types #-} {-# LANGUAGE Rank2Types #-}
{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE NamedFieldPuns #-}
module Hledger.Data.Transaction ( module Hledger.Data.Transaction (
-- * Transaction -- * Transaction
nulltransaction, nulltransaction,
@ -30,6 +31,7 @@ module Hledger.Data.Transaction (
balancedVirtualPostings, balancedVirtualPostings,
transactionsPostings, transactionsPostings,
BalancingOpts(..), BalancingOpts(..),
HasBalancingOpts(..),
defbalancingopts, defbalancingopts,
isTransactionBalanced, isTransactionBalanced,
balanceTransaction, balanceTransaction,
@ -660,6 +662,10 @@ transactionFile Transaction{tsourcepos} =
GenericSourcePos f _ _ -> f GenericSourcePos f _ _ -> f
JournalSourcePos f _ -> f JournalSourcePos f _ -> f
-- lenses
makeHledgerClassyLenses ''BalancingOpts
-- tests -- tests
tests_Transaction :: TestTree tests_Transaction :: TestTree

View File

@ -30,6 +30,7 @@ Some of these might belong in Hledger.Read.JournalReader or Hledger.Read.
module Hledger.Read.Common ( module Hledger.Read.Common (
Reader (..), Reader (..),
InputOpts(..), InputOpts(..),
HasInputOpts(..),
definputopts, definputopts,
rawOptsToInputOpts, rawOptsToInputOpts,
rawOptsToCommodityStylesOpts, rawOptsToCommodityStylesOpts,

View File

@ -4,10 +4,12 @@ Various options to use when reading journal files.
Similar to CliOptions.inputflags, simplifies the journal-reading functions. Similar to CliOptions.inputflags, simplifies the journal-reading functions.
-} -}
{-# LANGUAGE TemplateHaskell #-}
module Hledger.Read.InputOptions ( module Hledger.Read.InputOptions (
-- * Types and helpers for input options -- * Types and helpers for input options
InputOpts(..) InputOpts(..)
, HasInputOpts(..)
, definputopts , definputopts
, forecastPeriod , forecastPeriod
) where ) where
@ -16,10 +18,10 @@ import Control.Applicative ((<|>))
import Data.Time (Day, addDays) import Data.Time (Day, addDays)
import Hledger.Data.Types import Hledger.Data.Types
import Hledger.Data.Transaction (BalancingOpts(..), defbalancingopts) import Hledger.Data.Transaction (BalancingOpts(..), HasBalancingOpts(..), defbalancingopts)
import Hledger.Data.Journal (journalEndDate) import Hledger.Data.Journal (journalEndDate)
import Hledger.Data.Dates (nulldatespan) import Hledger.Data.Dates (nulldatespan)
import Hledger.Utils import Hledger.Utils (dbg2, makeHledgerClassyLenses)
data InputOpts = InputOpts { data InputOpts = InputOpts {
-- files_ :: [FilePath] -- files_ :: [FilePath]
@ -73,3 +75,10 @@ forecastPeriod d iopts j = do
mjournalend = dbg2 "journalEndDate" $ journalEndDate False j -- ignore secondary dates mjournalend = dbg2 "journalEndDate" $ journalEndDate False j -- ignore secondary dates
DateSpan reportStart reportEnd = reportspan_ iopts DateSpan reportStart reportEnd = reportspan_ iopts
return . dbg2 "forecastspan" $ DateSpan forecastStart forecastEnd return . dbg2 "forecastspan" $ DateSpan forecastStart forecastEnd
-- ** Lenses
makeHledgerClassyLenses ''InputOpts
instance HasBalancingOpts InputOpts where
balancingOpts = balancingopts