dev: ui: lens: Add classy lens instances for UIOpts and UIState.
This commit is contained in:
		
							parent
							
								
									09a2449f4f
								
							
						
					
					
						commit
						f471258a48
					
				| @ -103,3 +103,21 @@ getHledgerUIOpts = do | |||||||
|   let args' = replaceNumericFlags args |   let args' = replaceNumericFlags args | ||||||
|   let cmdargopts = either usageError id $ process uimode args' |   let cmdargopts = either usageError id $ process uimode args' | ||||||
|   rawOptsToUIOpts cmdargopts |   rawOptsToUIOpts cmdargopts | ||||||
|  | 
 | ||||||
|  | instance HasCliOpts UIOpts where | ||||||
|  |     cliOpts f uiopts = (\x -> uiopts{cliopts_=x}) <$> f (cliopts_ uiopts) | ||||||
|  | 
 | ||||||
|  | instance HasInputOpts UIOpts where | ||||||
|  |     inputOpts = cliOpts.inputOpts | ||||||
|  | 
 | ||||||
|  | instance HasBalancingOpts UIOpts where | ||||||
|  |     balancingOpts = cliOpts.balancingOpts | ||||||
|  | 
 | ||||||
|  | instance HasReportSpec UIOpts where | ||||||
|  |     reportSpec = cliOpts.reportSpec | ||||||
|  | 
 | ||||||
|  | instance HasReportOptsNoUpdate UIOpts where | ||||||
|  |     reportOptsNoUpdate = cliOpts.reportOptsNoUpdate | ||||||
|  | 
 | ||||||
|  | instance HasReportOpts UIOpts where | ||||||
|  |     reportOpts = cliOpts.reportOpts | ||||||
|  | |||||||
| @ -48,6 +48,7 @@ import Text.Show.Functions () | |||||||
|   -- import the Show instance for functions. Warning, this also re-exports it |   -- import the Show instance for functions. Warning, this also re-exports it | ||||||
| 
 | 
 | ||||||
| import Hledger | import Hledger | ||||||
|  | import Hledger.Cli (HasCliOpts(..)) | ||||||
| import Hledger.UI.UIOptions | import Hledger.UI.UIOptions | ||||||
| 
 | 
 | ||||||
| -- | hledger-ui's application state. This holds one or more stateful screens. | -- | hledger-ui's application state. This holds one or more stateful screens. | ||||||
| @ -160,7 +161,24 @@ type NumberedTransaction = (Integer, Transaction) | |||||||
| --    mempty        = list "" V.empty 1  -- XXX problem in 0.7, every list requires a unique Name | --    mempty        = list "" V.empty 1  -- XXX problem in 0.7, every list requires a unique Name | ||||||
| --    mappend l1 l2 = l1 & listElementsL .~ (l1^.listElementsL <> l2^.listElementsL) | --    mappend l1 l2 = l1 & listElementsL .~ (l1^.listElementsL <> l2^.listElementsL) | ||||||
| 
 | 
 | ||||||
| concat <$> mapM makeLenses [ | makeLenses ''Screen | ||||||
|    ''Screen |  | ||||||
|   ] |  | ||||||
| 
 | 
 | ||||||
|  | uioptslens f ui = (\x -> ui{aopts=x}) <$> f (aopts ui) | ||||||
|  | 
 | ||||||
|  | instance HasCliOpts UIState where | ||||||
|  |     cliOpts = uioptslens.cliOpts | ||||||
|  | 
 | ||||||
|  | instance HasInputOpts UIState where | ||||||
|  |     inputOpts = uioptslens.inputOpts | ||||||
|  | 
 | ||||||
|  | instance HasBalancingOpts UIState where | ||||||
|  |     balancingOpts = uioptslens.balancingOpts | ||||||
|  | 
 | ||||||
|  | instance HasReportSpec UIState where | ||||||
|  |     reportSpec = uioptslens.reportSpec | ||||||
|  | 
 | ||||||
|  | instance HasReportOptsNoUpdate UIState where | ||||||
|  |     reportOptsNoUpdate = uioptslens.reportOptsNoUpdate | ||||||
|  | 
 | ||||||
|  | instance HasReportOpts UIState where | ||||||
|  |     reportOpts = uioptslens.reportOpts | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user