mirror of https://gitlab.com/bashrc2/epicyon
				
				
				
			Wildcard in middle
							parent
							
								
									81c78e2b0e
								
							
						
					
					
						commit
						85780153dc
					
				
							
								
								
									
										75
									
								
								content.py
								
								
								
								
							
							
						
						
									
										75
									
								
								content.py
								
								
								
								
							|  | @ -1052,36 +1052,53 @@ def detect_dogwhistles(content: str, dogwhistles: {}) -> {}: | ||||||
|                         } |                         } | ||||||
|                     else: |                     else: | ||||||
|                         result[whistle]['count'] += 1 |                         result[whistle]['count'] += 1 | ||||||
|         else: |             continue | ||||||
|             if whistle.lower().endswith('-x'): |  | ||||||
|                 whistle = whistle[:len(whistle)-2] |  | ||||||
|                 starting = True |  | ||||||
|             elif (whistle.endswith('*') or |  | ||||||
|                   whistle.endswith('~') or |  | ||||||
|                   whistle.endswith('-')): |  | ||||||
|                 whistle = whistle[:len(whistle)-1] |  | ||||||
|                 starting = True |  | ||||||
| 
 | 
 | ||||||
|             if starting: |         if whistle.lower().endswith('-x'): | ||||||
|                 for wrd in words: |             whistle = whistle[:len(whistle)-2] | ||||||
|                     if wrd.startswith(whistle): |             starting = True | ||||||
|                         if not result.get(whistle): |         elif (whistle.endswith('*') or | ||||||
|                             result[whistle] = { |               whistle.endswith('~') or | ||||||
|                                 "count": 1, |               whistle.endswith('-')): | ||||||
|                                 "category": category |             whistle = whistle[:len(whistle)-1] | ||||||
|                             } |             starting = True | ||||||
|                         else: | 
 | ||||||
|                             result[whistle]['count'] += 1 |         if starting: | ||||||
|             else: |             for wrd in words: | ||||||
|                 for wrd in words: |                 if wrd.startswith(whistle): | ||||||
|                     if wrd == whistle: |                     if not result.get(whistle): | ||||||
|                         if not result.get(whistle): |                         result[whistle] = { | ||||||
|                             result[whistle] = { |                             "count": 1, | ||||||
|                                 "count": 1, |                             "category": category | ||||||
|                                 "category": category |                         } | ||||||
|                             } |                     else: | ||||||
|                         else: |                         result[whistle]['count'] += 1 | ||||||
|                             result[whistle]['count'] += 1 |             continue | ||||||
|  | 
 | ||||||
|  |         if '*' in whistle: | ||||||
|  |             whistle_start = whistle.split('*', 1)[0] | ||||||
|  |             whistle_end = whistle.split('*', 1)[1] | ||||||
|  |             for wrd in words: | ||||||
|  |                 if wrd.startswith(whistle_start) and \ | ||||||
|  |                    wrd.endswith(whistle_end): | ||||||
|  |                     if not result.get(whistle): | ||||||
|  |                         result[whistle] = { | ||||||
|  |                             "count": 1, | ||||||
|  |                             "category": category | ||||||
|  |                         } | ||||||
|  |                     else: | ||||||
|  |                         result[whistle]['count'] += 1 | ||||||
|  |             continue | ||||||
|  | 
 | ||||||
|  |         for wrd in words: | ||||||
|  |             if wrd == whistle: | ||||||
|  |                 if not result.get(whistle): | ||||||
|  |                     result[whistle] = { | ||||||
|  |                         "count": 1, | ||||||
|  |                         "category": category | ||||||
|  |                     } | ||||||
|  |                 else: | ||||||
|  |                     result[whistle]['count'] += 1 | ||||||
|     return result |     return result | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										5
									
								
								tests.py
								
								
								
								
							
							
						
						
									
										5
									
								
								tests.py
								
								
								
								
							|  | @ -7332,7 +7332,8 @@ def _test_dogwhistles(): | ||||||
|     dogwhistles = { |     dogwhistles = { | ||||||
|         "X-hamstered": "hamsterism", |         "X-hamstered": "hamsterism", | ||||||
|         "gerbil": "rodent", |         "gerbil": "rodent", | ||||||
|         "*snake": "slither" |         "*snake": "slither", | ||||||
|  |         "start*end": "something" | ||||||
|     } |     } | ||||||
|     content = 'This text does not contain any dogwhistles' |     content = 'This text does not contain any dogwhistles' | ||||||
|     assert not detect_dogwhistles(content, dogwhistles) |     assert not detect_dogwhistles(content, dogwhistles) | ||||||
|  | @ -7340,6 +7341,8 @@ def _test_dogwhistles(): | ||||||
|     assert detect_dogwhistles(content, dogwhistles) |     assert detect_dogwhistles(content, dogwhistles) | ||||||
|     content = 'A rattlesnake.' |     content = 'A rattlesnake.' | ||||||
|     assert detect_dogwhistles(content, dogwhistles) |     assert detect_dogwhistles(content, dogwhistles) | ||||||
|  |     content = 'A startthingend.' | ||||||
|  |     assert detect_dogwhistles(content, dogwhistles) | ||||||
|     content = 'This content is unhamstered and yhamstered.' |     content = 'This content is unhamstered and yhamstered.' | ||||||
|     result = detect_dogwhistles(content, dogwhistles) |     result = detect_dogwhistles(content, dogwhistles) | ||||||
|     assert result |     assert result | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue