mirror of
				https://github.com/wting/autojump
				synced 2025-06-13 12:54:07 +00:00 
			
		
		
		
	Improved handling multiple directory needles
This commit is contained in:
		
							parent
							
								
									0ecf1b4e3b
								
							
						
					
					
						commit
						575b14a13f
					
				| @ -20,14 +20,15 @@ else: | |||||||
| def match_anywhere(needles, haystack, ignore_case=False): | def match_anywhere(needles, haystack, ignore_case=False): | ||||||
|     """ |     """ | ||||||
|     Matches needles anywhere in the path as long as they're in the same (but |     Matches needles anywhere in the path as long as they're in the same (but | ||||||
|     not necessary consecutive) order. |     not necessary consecutive) order, and the last needle is at the end. | ||||||
| 
 | 
 | ||||||
|     For example: |     For example: | ||||||
|         needles = ['foo', 'baz'] |         needles = ['foo', 'baz'] | ||||||
|         regex needle = r'.*foo.*baz.*' |         regex needle = r'foo.*/.*baz[^/]*$' | ||||||
|         haystack = [ |         haystack = [ | ||||||
|             (path='/foo/bar/baz', weight=10), |             (path='/foo/bar/baz', weight=10), | ||||||
|             (path='/baz/foo/bar', weight=10), |             (path='/baz/foo/bar', weight=10), | ||||||
|  |             (path='/foo/baz/bar', weight=11), | ||||||
|             (path='/foo/baz', weight=10), |             (path='/foo/baz', weight=10), | ||||||
|         ] |         ] | ||||||
| 
 | 
 | ||||||
| @ -36,8 +37,9 @@ def match_anywhere(needles, haystack, ignore_case=False): | |||||||
|             (path='/foo/baz', weight=10), |             (path='/foo/baz', weight=10), | ||||||
|         ] |         ] | ||||||
|     """ |     """ | ||||||
|     regex_needle = '.*' + '.*'.join(imap(re.escape, needles)) + '.*' |     regex_some_seps = '.*' + os.sep + '.*' | ||||||
|     regex_flags = re.IGNORECASE | re.UNICODE if ignore_case else re.UNICODE |     regex_no_sep_end = '[^' + os.sep + ']*$' | ||||||
|  |     regex_needle = regex_some_seps.join(imap(re.escape, needles)) + regex_no_sep_end | ||||||
|     found = lambda haystack: re.search( |     found = lambda haystack: re.search( | ||||||
|         regex_needle, |         regex_needle, | ||||||
|         haystack.path, |         haystack.path, | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user