From 8d1e3e638b05c8e86d023202dfe5d34f3ad8e405 Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Sat, 12 Dec 2020 12:13:52 -0800 Subject: [PATCH] ;ui: refactor, drop old option support --- hledger-ui/Hledger/UI/UIState.hs | 39 ++++++++++++++------------------ 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/hledger-ui/Hledger/UI/UIState.hs b/hledger-ui/Hledger/UI/UIState.hs index 9a1c66410..7daf1d295 100644 --- a/hledger-ui/Hledger/UI/UIState.hs +++ b/hledger-ui/Hledger/UI/UIState.hs @@ -22,17 +22,17 @@ import Hledger.UI.UIOptions -- | Toggle between showing only unmarked items or all items. toggleUnmarked :: UIState -> UIState toggleUnmarked ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec}}} = - ui{aopts=uopts{cliopts_=copts{reportspec_=reportSpecToggleStatusSomehow Unmarked copts rspec}}} + ui{aopts=uopts{cliopts_=copts{reportspec_=reportSpecToggleStatus Unmarked copts rspec}}} -- | Toggle between showing only pending items or all items. togglePending :: UIState -> UIState togglePending ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec}}} = - ui{aopts=uopts{cliopts_=copts{reportspec_=reportSpecToggleStatusSomehow Pending copts rspec}}} + ui{aopts=uopts{cliopts_=copts{reportspec_=reportSpecToggleStatus Pending copts rspec}}} -- | Toggle between showing only cleared items or all items. toggleCleared :: UIState -> UIState toggleCleared ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec}}} = - ui{aopts=uopts{cliopts_=copts{reportspec_=reportSpecToggleStatusSomehow Cleared copts rspec}}} + ui{aopts=uopts{cliopts_=copts{reportspec_=reportSpecToggleStatus Cleared copts rspec}}} -- TODO testing different status toggle styles @@ -52,17 +52,12 @@ uiShowStatus copts ss = showstatus Pending = "pending" showstatus Unmarked = "unmarked" -reportSpecToggleStatusSomehow :: Status -> CliOpts -> ReportSpec -> ReportSpec -reportSpecToggleStatusSomehow s copts = - either (error "reportSpecToggleStatusSomehow: updating Status should not result in an error") id -- PARTIAL: - . updateReportSpecWith update - where - update = case maybeposintopt "status-toggles" $ rawopts_ copts of - Just 2 -> reportOptsToggleStatus2 s - Just 3 -> reportOptsToggleStatus3 s --- Just 4 -> reportOptsToggleStatus4 s --- Just 5 -> reportOptsToggleStatus5 s - _ -> reportOptsToggleStatus1 s +reportSpecToggleStatus :: Status -> CliOpts -> ReportSpec -> ReportSpec +reportSpecToggleStatus s _copts = + either (error "reportSpecToggleStatus: changing status should not have caused this error") id -- PARTIAL: + . updateReportSpecWith (reportOptsToggleStatus1 s) + +-- various toggle behaviours: -- 1 UPC toggles only X/all reportOptsToggleStatus1 s ropts@ReportOpts{statuses_=ss} @@ -77,21 +72,21 @@ reportOptsToggleStatus1 s ropts@ReportOpts{statuses_=ss} -- pressing Y after first or second step starts new cycle: -- [u] P [p] -- [pc] P [p] -reportOptsToggleStatus2 s ropts@ReportOpts{statuses_=ss} - | ss == [s] = ropts{statuses_=complement [s]} - | ss == complement [s] = ropts{statuses_=[]} - | otherwise = ropts{statuses_=[s]} -- XXX assume only three values +-- reportOptsToggleStatus2 s ropts@ReportOpts{statuses_=ss} +-- | ss == [s] = ropts{statuses_=complement [s]} +-- | ss == complement [s] = ropts{statuses_=[]} +-- | otherwise = ropts{statuses_=[s]} -- XXX assume only three values -- 3 UPC toggles each X -reportOptsToggleStatus3 s ropts@ReportOpts{statuses_=ss} - | s `elem` ss = ropts{statuses_=filter (/= s) ss} - | otherwise = ropts{statuses_=simplifyStatuses (s:ss)} +-- reportOptsToggleStatus3 s ropts@ReportOpts{statuses_=ss} +-- | s `elem` ss = ropts{statuses_=filter (/= s) ss} +-- | otherwise = ropts{statuses_=simplifyStatuses (s:ss)} -- 4 upc sets X, UPC sets not-X --reportOptsToggleStatus4 s ropts@ReportOpts{statuses_=ss} -- | s `elem` ss = ropts{statuses_=filter (/= s) ss} -- | otherwise = ropts{statuses_=simplifyStatuses (s:ss)} --- + -- 5 upc toggles X, UPC toggles not-X --reportOptsToggleStatus5 s ropts@ReportOpts{statuses_=ss} -- | s `elem` ss = ropts{statuses_=filter (/= s) ss}