tag: first arg filters tag names, the rest filter transactions (#261)
This commit is contained in:
		
							parent
							
								
									bf234431ef
								
							
						
					
					
						commit
						24d8336728
					
				| @ -9,26 +9,34 @@ where | ||||
| 
 | ||||
| import Data.List | ||||
| import Data.String.Here | ||||
| import qualified Data.Text.IO as T | ||||
| import qualified Data.Text as T | ||||
| import Safe | ||||
| import Hledger | ||||
| import Hledger.Cli.CliOptions | ||||
| 
 | ||||
| tagsmode = hledgerCommandMode | ||||
|   [here| tags | ||||
| List all the tag names in use. | ||||
| With a query, only matched transactions' tags are shown. | ||||
| List all the tag names used in the journal. With a TAGREGEX argument, | ||||
| only tag names matching the regular expression (case insensitive) are shown.  | ||||
| With QUERY arguments, only transactions matching the query are considered.   | ||||
| Reads the default journal file, or another specified with -f. | ||||
| FLAGS | ||||
|   |] | ||||
|   [] -- [flagNone ["strict"] (\opts -> setboolopt "strict" opts) "makes date comparing strict"] --  | ||||
|   [generalflagsgroup1] | ||||
|   [] | ||||
|   ([], Just $ argsFlag "[QUERY]") | ||||
|   ([], Just $ argsFlag "[TAGREGEX [QUERY...]]") | ||||
| 
 | ||||
| tags CliOpts{rawopts_=_rawopts,reportopts_=ropts} j = do | ||||
| tags CliOpts{rawopts_=rawopts,reportopts_=ropts} j = do | ||||
|   d <- getCurrentDay | ||||
|   let | ||||
|     q = queryFromOpts d ropts | ||||
|     ts = filter (q `matchesTransaction`) $ jtxns $ journalSelectingAmountFromOpts ropts j | ||||
|     tags = nub $ sort $ map fst $ concatMap transactionAllTags ts | ||||
|   mapM_ T.putStrLn tags | ||||
|     args      = listofstringopt "args" rawopts | ||||
|     mtagpats  = headMay args | ||||
|     queryargs = drop 1 args | ||||
|     q = queryFromOpts d $ ropts{query_ = unwords queryargs}  | ||||
|     txns = filter (q `matchesTransaction`) $ jtxns $ journalSelectingAmountFromOpts ropts j | ||||
|     tags =  | ||||
|       nub $ sort $  | ||||
|       (maybe id (filter . regexMatchesCI) mtagpats) $  | ||||
|       map (T.unpack . fst) $ concatMap transactionAllTags txns | ||||
|   mapM_ putStrLn tags | ||||
|  | ||||
| @ -766,7 +766,9 @@ The stats command also supports `-o/--output-file` | ||||
| for controlling [output destination](#output-destination). | ||||
| 
 | ||||
| ## tags | ||||
| List all the tag names in use. | ||||
| List all the tag names used in the journal. With a TAGREGEX argument, | ||||
| only tag names matching the regular expression (case insensitive) are shown.  | ||||
| With additional QUERY arguments, only transactions matching the query are considered.   | ||||
| 
 | ||||
| ## test | ||||
| Run built-in unit tests. | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user