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)
 | 
						|
}
 |