lib: multiple status: query terms are OR'd (#564)
Like desc: and acct:. I think this is more intuitive and useful, so now eg "status: status:!" works (equivalent to -UP or "not:status:*").
This commit is contained in:
		
							parent
							
								
									7fc921db86
								
							
						
					
					
						commit
						5d28120f6d
					
				| @ -155,15 +155,17 @@ data QueryOpt = QueryOptInAcctOnly AccountName  -- ^ show an account register fo | |||||||
| -- Multiple terms are combined as follows: | -- Multiple terms are combined as follows: | ||||||
| -- 1. multiple account patterns are OR'd together | -- 1. multiple account patterns are OR'd together | ||||||
| -- 2. multiple description patterns are OR'd together | -- 2. multiple description patterns are OR'd together | ||||||
| -- 3. then all terms are AND'd together | -- 3. multiple status patterns are OR'd together | ||||||
|  | -- 4. then all terms are AND'd together | ||||||
| parseQuery :: Day -> T.Text -> (Query,[QueryOpt]) | parseQuery :: Day -> T.Text -> (Query,[QueryOpt]) | ||||||
| parseQuery d s = (q, opts) | parseQuery d s = (q, opts) | ||||||
|   where |   where | ||||||
|     terms = words'' prefixes s |     terms = words'' prefixes s | ||||||
|     (pats, opts) = partitionEithers $ map (parseQueryTerm d) terms |     (pats, opts) = partitionEithers $ map (parseQueryTerm d) terms | ||||||
|     (descpats, pats') = partition queryIsDesc pats |     (descpats, pats') = partition queryIsDesc pats | ||||||
|     (acctpats, otherpats) = partition queryIsAcct pats' |     (acctpats, pats'') = partition queryIsAcct pats' | ||||||
|     q = simplifyQuery $ And $ [Or acctpats, Or descpats] ++ otherpats |     (statuspats, otherpats) = partition queryIsStatus pats'' | ||||||
|  |     q = simplifyQuery $ And $ [Or acctpats, Or descpats, Or statuspats] ++ otherpats | ||||||
| 
 | 
 | ||||||
| tests_parseQuery = [ | tests_parseQuery = [ | ||||||
|   "parseQuery" ~: do |   "parseQuery" ~: do | ||||||
|  | |||||||
| @ -100,3 +100,16 @@ hledger -fstatus.journal print status: | |||||||
| 
 | 
 | ||||||
| >>>=0 | >>>=0 | ||||||
| 
 | 
 | ||||||
|  | # 11. multiple status: queries are OR'd | ||||||
|  | hledger -fstatus.journal print status: status:! | ||||||
|  | >>> | ||||||
|  | 2017/01/01 uncleared | ||||||
|  |     (a)               1 | ||||||
|  |     (b)               1 | ||||||
|  | 
 | ||||||
|  | 2017/01/02 ! pending | ||||||
|  |     (a)               1 | ||||||
|  |     ! (b)             1 | ||||||
|  | 
 | ||||||
|  | >>>= 0 | ||||||
|  | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user