convert: keep original description by default, allow backreferences in replace pattern
This commit is contained in:
		
							parent
							
								
									b34015475b
								
							
						
					
					
						commit
						c2cf9b2185
					
				| @ -13,7 +13,7 @@ import Ledger.Amount (nullmixedamt) | ||||
| import System.IO (stderr) | ||||
| import Text.CSV (parseCSVFromFile, printCSV) | ||||
| import Text.Printf (hPrintf) | ||||
| import Text.RegexPR (matchRegexPR) | ||||
| import Text.RegexPR (matchRegexPR, gsubRegexPR) | ||||
| import Data.Maybe | ||||
| import Ledger.Dates (firstJust, showDate, parsedate) | ||||
| import System.Locale (defaultTimeLocale) | ||||
| @ -307,12 +307,11 @@ identify rules defacct desc | null matchingrules = (defacct,desc) | ||||
|                             | otherwise = (acct,newdesc) | ||||
|     where | ||||
|       matchingrules = filter ismatch rules :: [AccountRule] | ||||
|           where ismatch = any (isJust . flip matchregex desc . fst) . fst | ||||
|           where ismatch = any (isJust . flip matchRegexPR (caseinsensitive desc) . fst) . fst | ||||
|       (prs,acct) = head matchingrules | ||||
|       mrs = filter (isJust . fst) $ map (\(p,r) -> (matchregex p desc, r)) prs | ||||
|       (m,repl) = head mrs | ||||
|       matched = fst $ fst $ fromJust m | ||||
|       newdesc = fromMaybe matched repl | ||||
| 
 | ||||
| matchregex = matchRegexPR . ("(?i)" ++) | ||||
|       p_ms_r = filter (\(_,m,_) -> isJust m) $ map (\(p,r) -> (p, matchRegexPR (caseinsensitive p) desc, r)) prs | ||||
|       (p,_,r) = head p_ms_r | ||||
|       newdesc = case r of Just rpat -> gsubRegexPR (caseinsensitive p) rpat desc | ||||
|                           Nothing   -> desc | ||||
| 
 | ||||
| caseinsensitive = ("(?i)"++) | ||||
|  | ||||
							
								
								
									
										10
									
								
								MANUAL
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								MANUAL
									
									
									
									
									
								
							| @ -436,10 +436,12 @@ Notes: | ||||
|   account name to use when the transaction's description matches any of | ||||
|   these patterns. | ||||
| 
 | ||||
| - A match pattern may optionally be followed by = and a replacement | ||||
|   pattern, which will become the ledger transaction's description. | ||||
|   Otherwise the matched part of the csv description is used. (To preserve | ||||
|   the full csv description, use .* before and after the match pattern.) | ||||
| - A match pattern may be followed by a replacement pattern, separated by | ||||
|   ``=``, which rewrites the matched part of the description.  Use this if | ||||
|   you want to clean up messy bank data.  To rewrite the entire description, | ||||
|   use a match pattern like ``.*PAT.*=REPL``. Within a replacement pattern, | ||||
|   you can refer to the matched text with ``\0`` and any regex groups | ||||
|   with ``\1``, ``\2`` in the usual way. | ||||
| 
 | ||||
| test | ||||
| '''' | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user