29 lines
		
	
	
		
			750 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			750 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| //go:build windows
 | |
| 
 | |
| package fsutils
 | |
| 
 | |
| import (
 | |
| 	"path/filepath"
 | |
| 	"regexp"
 | |
| 	"strings"
 | |
| )
 | |
| 
 | |
| var separatorToReplace = regexp.QuoteMeta(string(filepath.Separator))
 | |
| 
 | |
| // NormalizePathInRegex normalizes path in regular expressions.
 | |
| // noop on Unix.
 | |
| // This replacing should be safe because "/" are disallowed in Windows
 | |
| // https://docs.microsoft.com/windows/win32/fileio/naming-a-file
 | |
| func NormalizePathInRegex(path string) string {
 | |
| 	// remove redundant character escape "\/" https://github.com/golangci/golangci-lint/issues/3277
 | |
| 	clean := regexp.MustCompile(`\\+/`).
 | |
| 		ReplaceAllStringFunc(path, func(s string) string {
 | |
| 			if strings.Count(s, "\\")%2 == 0 {
 | |
| 				return s
 | |
| 			}
 | |
| 			return s[1:]
 | |
| 		})
 | |
| 
 | |
| 	return strings.ReplaceAll(clean, "/", separatorToReplace)
 | |
| }
 | 
