From 765466c3920409c5848ae8d8c7dec36b01e72c45 Mon Sep 17 00:00:00 2001 From: Stephen Morgan Date: Fri, 27 Aug 2021 00:09:07 +1000 Subject: [PATCH] dev!: ui: Rename fields of UIOpts for consistency. In code, either replace the name with the new name, or use the lenses instead. watch_ -> uoWatch cliopts_ -> uoCliOpts --- hledger-ui/Hledger/UI/AccountsScreen.hs | 6 +++--- hledger-ui/Hledger/UI/ErrorScreen.hs | 9 +++++---- hledger-ui/Hledger/UI/Main.hs | 8 ++++---- hledger-ui/Hledger/UI/RegisterScreen.hs | 6 +++--- hledger-ui/Hledger/UI/TransactionScreen.hs | 6 +++--- hledger-ui/Hledger/UI/UIOptions.hs | 14 +++++++------- 6 files changed, 25 insertions(+), 24 deletions(-) diff --git a/hledger-ui/Hledger/UI/AccountsScreen.hs b/hledger-ui/Hledger/UI/AccountsScreen.hs index fadf3ff3a..ae967b84d 100644 --- a/hledger-ui/Hledger/UI/AccountsScreen.hs +++ b/hledger-ui/Hledger/UI/AccountsScreen.hs @@ -49,7 +49,7 @@ accountsScreen = AccountsScreen{ asInit :: Day -> Bool -> UIState -> UIState asInit d reset ui@UIState{ - aopts=UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec@ReportSpec{_rsReportOpts=ropts}}}, + aopts=UIOpts{uoCliOpts=copts@CliOpts{reportspec_=rspec@ReportSpec{_rsReportOpts=ropts}}}, ajournal=j, aScreen=s@AccountsScreen{} } = @@ -103,7 +103,7 @@ asInit d reset ui@UIState{ asInit _ _ _ = error "init function called with wrong screen type, should not happen" -- PARTIAL: asDraw :: UIState -> [Widget Name] -asDraw UIState{aopts=_uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec}} +asDraw UIState{aopts=_uopts@UIOpts{uoCliOpts=copts@CliOpts{reportspec_=rspec}} ,ajournal=j ,aScreen=s@AccountsScreen{} ,aMode=mode @@ -223,7 +223,7 @@ asDrawItem (acctwidth, balwidth) selected AccountsScreenItem{..} = asHandle :: UIState -> BrickEvent Name AppEvent -> EventM Name (Next UIState) asHandle ui0@UIState{ aScreen=scr@AccountsScreen{..} - ,aopts=UIOpts{cliopts_=copts} + ,aopts=UIOpts{uoCliOpts=copts} ,ajournal=j ,aMode=mode } ev = do diff --git a/hledger-ui/Hledger/UI/ErrorScreen.hs b/hledger-ui/Hledger/UI/ErrorScreen.hs index 60bd45441..5ff2dcef3 100644 --- a/hledger-ui/Hledger/UI/ErrorScreen.hs +++ b/hledger-ui/Hledger/UI/ErrorScreen.hs @@ -21,6 +21,7 @@ import Data.Void (Void) import Graphics.Vty (Event(..),Key(..),Modifier(..)) import Text.Megaparsec import Text.Megaparsec.Char +import Lens.Micro ((^.)) import Hledger.Cli hiding (progname,prognameandversion) import Hledger.UI.UIOptions @@ -42,7 +43,7 @@ esInit _ _ ui@UIState{aScreen=ErrorScreen{}} = ui esInit _ _ _ = error "init function called with wrong screen type, should not happen" -- PARTIAL: esDraw :: UIState -> [Widget Name] -esDraw UIState{aopts=UIOpts{cliopts_=copts@CliOpts{}} +esDraw UIState{aopts=UIOpts{uoCliOpts=copts} ,aScreen=ErrorScreen{..} ,aMode=mode } = @@ -75,7 +76,7 @@ esDraw _ = error "draw function called with wrong screen type, should not happen esHandle :: UIState -> BrickEvent Name AppEvent -> EventM Name (Next UIState) esHandle ui@UIState{aScreen=ErrorScreen{..} - ,aopts=UIOpts{cliopts_=copts} + ,aopts=UIOpts{uoCliOpts=copts} ,ajournal=j ,aMode=mode } @@ -181,8 +182,8 @@ uiReloadJournalIfChanged copts d j ui = do -- fail, enter (or update) the error screen. Or if balance assertions -- are disabled, do nothing. uiCheckBalanceAssertions :: Day -> UIState -> UIState -uiCheckBalanceAssertions d ui@UIState{aopts=UIOpts{cliopts_=copts}, ajournal=j} - | ignore_assertions_ . balancingopts_ $ inputopts_ copts = ui +uiCheckBalanceAssertions d ui@UIState{ajournal=j} + | ui^.ignore_assertions = ui | otherwise = case journalCheckBalanceAssertions j of Nothing -> ui diff --git a/hledger-ui/Hledger/UI/Main.hs b/hledger-ui/Hledger/UI/Main.hs index 6a54d6cd0..0443a7736 100644 --- a/hledger-ui/Hledger/UI/Main.hs +++ b/hledger-ui/Hledger/UI/Main.hs @@ -44,7 +44,7 @@ writeChan = BC.writeBChan main :: IO () main = do - opts@UIOpts{cliopts_=copts@CliOpts{inputopts_=iopts,rawopts_=rawopts}} <- getHledgerUIOpts + opts@UIOpts{uoCliOpts=copts@CliOpts{inputopts_=iopts,rawopts_=rawopts}} <- getHledgerUIOpts -- when (debug_ $ cliopts_ opts) $ printf "%s\n" prognameandversion >> printf "opts: %s\n" (show opts) -- always generate forecasted periodic transactions; their visibility will be toggled by the UI. @@ -59,7 +59,7 @@ main = do _ -> withJournalDo copts' (runBrickUi opts) runBrickUi :: UIOpts -> Journal -> IO () -runBrickUi uopts@UIOpts{cliopts_=copts@CliOpts{inputopts_=_iopts,reportspec_=rspec@ReportSpec{_rsReportOpts=ropts}}} j = do +runBrickUi uopts@UIOpts{uoCliOpts=copts@CliOpts{inputopts_=_iopts,reportspec_=rspec@ReportSpec{_rsReportOpts=ropts}}} j = do d <- getCurrentDay let @@ -102,7 +102,7 @@ runBrickUi uopts@UIOpts{cliopts_=copts@CliOpts{inputopts_=_iopts,reportspec_=rsp -- It's cleaner and less conflicting to keep the former out of the latter. uopts' = uopts{ - cliopts_=copts{ + uoCliOpts=copts{ reportspec_=rspec{ _rsQuery=filteredQuery $ _rsQuery rspec, -- query with depth/date parts removed _rsReportOpts=ropts{ @@ -168,7 +168,7 @@ runBrickUi uopts@UIOpts{cliopts_=copts@CliOpts{inputopts_=_iopts,reportspec_=rsp -- print (length (show ui)) >> exitSuccess -- show any debug output to this point & quit - if not (watch_ uopts') + if not (uoWatch uopts') then void $ Brick.defaultMain brickapp ui diff --git a/hledger-ui/Hledger/UI/RegisterScreen.hs b/hledger-ui/Hledger/UI/RegisterScreen.hs index 531ab12e9..452deb242 100644 --- a/hledger-ui/Hledger/UI/RegisterScreen.hs +++ b/hledger-ui/Hledger/UI/RegisterScreen.hs @@ -56,7 +56,7 @@ rsSetAccount a forceinclusive scr@RegisterScreen{} = rsSetAccount _ _ scr = scr rsInit :: Day -> Bool -> UIState -> UIState -rsInit d reset ui@UIState{aopts=_uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec@ReportSpec{_rsReportOpts=ropts}}}, ajournal=j, aScreen=s@RegisterScreen{..}} = +rsInit d reset ui@UIState{aopts=_uopts@UIOpts{uoCliOpts=copts@CliOpts{reportspec_=rspec@ReportSpec{_rsReportOpts=ropts}}}, ajournal=j, aScreen=s@RegisterScreen{..}} = ui{aScreen=s{rsList=newitems'}} where -- gather arguments and queries @@ -134,7 +134,7 @@ rsInit d reset ui@UIState{aopts=_uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_ rsInit _ _ _ = error "init function called with wrong screen type, should not happen" -- PARTIAL: rsDraw :: UIState -> [Widget Name] -rsDraw UIState{aopts=_uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec}} +rsDraw UIState{aopts=_uopts@UIOpts{uoCliOpts=copts@CliOpts{reportspec_=rspec}} ,aScreen=RegisterScreen{..} ,aMode=mode } = @@ -275,7 +275,7 @@ rsDrawItem (datewidth,descwidth,acctswidth,changewidth,balwidth) selected Regist rsHandle :: UIState -> BrickEvent Name AppEvent -> EventM Name (Next UIState) rsHandle ui@UIState{ aScreen=s@RegisterScreen{..} - ,aopts=UIOpts{cliopts_=copts} + ,aopts=UIOpts{uoCliOpts=copts} ,ajournal=j ,aMode=mode } ev = do diff --git a/hledger-ui/Hledger/UI/TransactionScreen.hs b/hledger-ui/Hledger/UI/TransactionScreen.hs index 53ff669e6..f620ec629 100644 --- a/hledger-ui/Hledger/UI/TransactionScreen.hs +++ b/hledger-ui/Hledger/UI/TransactionScreen.hs @@ -41,7 +41,7 @@ transactionScreen = TransactionScreen{ } tsInit :: Day -> Bool -> UIState -> UIState -tsInit _d _reset ui@UIState{aopts=UIOpts{cliopts_=CliOpts{reportspec_=_rspec}} +tsInit _d _reset ui@UIState{aopts=UIOpts{} ,ajournal=_j ,aScreen=s@TransactionScreen{tsTransaction=(_,t),tsTransactions=nts} ,aPrevScreens=prevscreens @@ -60,7 +60,7 @@ tsInit _d _reset ui@UIState{aopts=UIOpts{cliopts_=CliOpts{reportspec_=_rspec}} tsInit _ _ _ = error "init function called with wrong screen type, should not happen" -- PARTIAL: tsDraw :: UIState -> [Widget Name] -tsDraw UIState{aopts=UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec@ReportSpec{_rsReportOpts=ropts}}} +tsDraw UIState{aopts=UIOpts{uoCliOpts=copts@CliOpts{reportspec_=rspec@ReportSpec{_rsReportOpts=ropts}}} ,ajournal=j ,aScreen=TransactionScreen{tsTransaction=(i,t') ,tsTransactions=nts @@ -133,7 +133,7 @@ tsDraw _ = error "draw function called with wrong screen type, should not happen tsHandle :: UIState -> BrickEvent Name AppEvent -> EventM Name (Next UIState) tsHandle ui@UIState{aScreen=TransactionScreen{tsTransaction=(i,t), tsTransactions=nts} - ,aopts=UIOpts{cliopts_=copts} + ,aopts=UIOpts{uoCliOpts=copts} ,ajournal=j ,aMode=mode } diff --git a/hledger-ui/Hledger/UI/UIOptions.hs b/hledger-ui/Hledger/UI/UIOptions.hs index 4b65e3ea3..4b4efa700 100644 --- a/hledger-ui/Hledger/UI/UIOptions.hs +++ b/hledger-ui/Hledger/UI/UIOptions.hs @@ -66,17 +66,17 @@ uimode = (mode "hledger-ui" (setopt "command" "ui" def) -- hledger-ui options, used in hledger-ui and above data UIOpts = UIOpts - { watch_ :: Bool + { uoWatch :: Bool , uoTheme :: Maybe String , uoRegister :: Maybe String - , cliopts_ :: CliOpts + , uoCliOpts :: CliOpts } deriving (Show) defuiopts = UIOpts - { watch_ = False + { uoWatch = False , uoTheme = Nothing , uoRegister = Nothing - , cliopts_ = defcliopts + , uoCliOpts = defcliopts } -- | Process a RawOpts into a UIOpts. @@ -85,10 +85,10 @@ rawOptsToUIOpts :: RawOpts -> IO UIOpts rawOptsToUIOpts rawopts = do cliopts <- set balanceaccum accum <$> rawOptsToCliOpts rawopts return defuiopts { - watch_ = boolopt "watch" rawopts + uoWatch = boolopt "watch" rawopts ,uoTheme = checkTheme <$> maybestringopt "theme" rawopts ,uoRegister = maybestringopt "register" rawopts - ,cliopts_ = cliopts + ,uoCliOpts = cliopts } where -- show historical balance by default (unlike hledger) @@ -105,7 +105,7 @@ getHledgerUIOpts = do rawOptsToUIOpts cmdargopts instance HasCliOpts UIOpts where - cliOpts f uiopts = (\x -> uiopts{cliopts_=x}) <$> f (cliopts_ uiopts) + cliOpts f uiopts = (\x -> uiopts{uoCliOpts=x}) <$> f (uoCliOpts uiopts) instance HasInputOpts UIOpts where inputOpts = cliOpts.inputOpts