tighten up status: docs and behaviour a bit (fix #227)
A status: query term no longer accepts * as a synonym for 1, which was a bit confusing since 1 matches both * and !. For now, it takes a value of 1 (true) or anything else (false).
This commit is contained in:
		
							parent
							
								
									c138c35d3b
								
							
						
					
					
						commit
						62bad65e5b
					
				| @ -137,9 +137,13 @@ Now let's explore the available journal file syntax in detail. | |||||||
| 
 | 
 | ||||||
| Each journal entry begins with a [simple date](#simple-dates) in | Each journal entry begins with a [simple date](#simple-dates) in | ||||||
| column 0, followed by three optional fields with spaces between them: | column 0, followed by three optional fields with spaces between them: | ||||||
| a status flag (`*` or `!` or nothing), a transaction code (eg a check | 
 | ||||||
| number), and/or a description; then two or more postings (of some | - a status flag, which can be empty or `!` or `*` (meaning "uncleared", "pending" and "cleared", or whatever you want) | ||||||
| amount to some account), each on their own line. | - a transaction code (eg a check number), | ||||||
|  | - and/or a description | ||||||
|  | 
 | ||||||
|  | then two or more postings (of some amount to some account), each on | ||||||
|  | their own line. | ||||||
| 
 | 
 | ||||||
| The posting amounts within a transaction must always balance, ie add up to | The posting amounts within a transaction must always balance, ie add up to | ||||||
| 0.  You can leave one amount blank and it will be inferred. | 0.  You can leave one amount blank and it will be inferred. | ||||||
| @ -852,7 +856,7 @@ A query term can be any of the following: | |||||||
| - `date2:PERIODEXPR` - as above, but match secondary dates | - `date2:PERIODEXPR` - as above, but match secondary dates | ||||||
| - `tag:NAME[=REGEX]` - match by (exact, case sensitive) [tag](#tags) name, and optionally match the tag value by regular expression. Note `tag:` will match a transaction if it or any its postings have the tag, and will match posting if it or its parent transaction has the tag. | - `tag:NAME[=REGEX]` - match by (exact, case sensitive) [tag](#tags) name, and optionally match the tag value by regular expression. Note `tag:` will match a transaction if it or any its postings have the tag, and will match posting if it or its parent transaction has the tag. | ||||||
| - `depth:N` - match (or display, depending on command) accounts at or above this [depth](#depth-limiting) | - `depth:N` - match (or display, depending on command) accounts at or above this [depth](#depth-limiting) | ||||||
| - `status:1` or `status:0` - match cleared/uncleared transactions | - `status:1` or `status:0` - match pending/cleared or uncleared transactions respectively | ||||||
| - `real:1` or `real:0` - match real/virtual-ness | - `real:1` or `real:0` - match real/virtual-ness | ||||||
| - `empty:1` or `empty:0` - match if amount is/is not zero | - `empty:1` or `empty:0` - match if amount is/is not zero | ||||||
| - `amt:N`, `amt:<N`, `amt:<=N`, `amt:>N`, `amt:>=N` - match postings with a single-commodity | - `amt:N`, `amt:<N`, `amt:<=N`, `amt:>N`, `amt:>=N` - match postings with a single-commodity | ||||||
|  | |||||||
| @ -331,18 +331,18 @@ parseTag s | '=' `elem` s = (n, Just $ tail v) | |||||||
|            | otherwise    = (s, Nothing) |            | otherwise    = (s, Nothing) | ||||||
|            where (n,v) = break (=='=') s |            where (n,v) = break (=='=') s | ||||||
| 
 | 
 | ||||||
| -- | Parse the boolean value part of a "status:" query, allowing "*" as | -- -- , treating "*" or "!" as synonyms for "1". | ||||||
| -- another way to spell True, similar to the journal file format. | -- | Parse the boolean value part of a "status:" query. | ||||||
| parseStatus :: String -> Bool | parseStatus :: String -> Bool | ||||||
| parseStatus s = s `elem` (truestrings ++ ["*"]) | parseStatus s = s `elem` (truestrings) -- ++ ["*","!"]) | ||||||
| 
 | 
 | ||||||
| -- | Parse the boolean value part of a "status:" query. A true value can | -- | Parse the boolean value part of a "status:" query. "1" means true, | ||||||
| -- be spelled as "1", "t" or "true". | -- anything else will be parsed as false without error. | ||||||
| parseBool :: String -> Bool | parseBool :: String -> Bool | ||||||
| parseBool s = s `elem` truestrings | parseBool s = s `elem` truestrings | ||||||
| 
 | 
 | ||||||
| truestrings :: [String] | truestrings :: [String] | ||||||
| truestrings = ["1","t","true"] | truestrings = ["1"] | ||||||
| 
 | 
 | ||||||
| simplifyQuery :: Query -> Query | simplifyQuery :: Query -> Query | ||||||
| simplifyQuery q = | simplifyQuery q = | ||||||
|  | |||||||
| @ -120,7 +120,7 @@ reportflags = [ | |||||||
|  ,flagReq  ["period","p"]    (\s opts -> Right $ setopt "period" s opts) "PERIODEXP" "set start date, end date, and/or reporting interval all at once (overrides the flags above)" |  ,flagReq  ["period","p"]    (\s opts -> Right $ setopt "period" s opts) "PERIODEXP" "set start date, end date, and/or reporting interval all at once (overrides the flags above)" | ||||||
|  ,flagNone ["date2","aux-date"] (setboolopt "date2") "use postings/txns' secondary dates instead" |  ,flagNone ["date2","aux-date"] (setboolopt "date2") "use postings/txns' secondary dates instead" | ||||||
| 
 | 
 | ||||||
|  ,flagNone ["cleared","C"]   (setboolopt "cleared") "include only cleared postings/txns" |  ,flagNone ["cleared","C"]   (setboolopt "cleared") "include only pending/cleared postings/txns" | ||||||
|  ,flagNone ["uncleared","U"] (setboolopt "uncleared") "include only uncleared postings/txns" |  ,flagNone ["uncleared","U"] (setboolopt "uncleared") "include only uncleared postings/txns" | ||||||
|  ,flagNone ["real","R"]      (setboolopt "real") "include only non-virtual postings" |  ,flagNone ["real","R"]      (setboolopt "real") "include only non-virtual postings" | ||||||
|  ,flagReq  ["depth"]         (\s opts -> Right $ setopt "depth" s opts) "N" "hide accounts/postings deeper than N" |  ,flagReq  ["depth"]         (\s opts -> Right $ setopt "depth" s opts) "N" "hide accounts/postings deeper than N" | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user