mirror of
https://github.com/CJackHwang/ds2api.git
synced 2026-05-09 02:45:29 +08:00
34 lines
838 B
Go
34 lines
838 B
Go
package util
|
|
|
|
import (
|
|
"regexp"
|
|
"strings"
|
|
)
|
|
|
|
var toolNameLoosePattern = regexp.MustCompile(`[^a-z0-9]+`)
|
|
|
|
func resolveAllowedToolNameWithLooseMatch(name string, allowed map[string]struct{}, allowedCanonical map[string]string) string {
|
|
if _, ok := allowed[name]; ok {
|
|
return name
|
|
}
|
|
lower := strings.ToLower(strings.TrimSpace(name))
|
|
if canonical, ok := allowedCanonical[lower]; ok {
|
|
return canonical
|
|
}
|
|
if idx := strings.LastIndex(lower, "."); idx >= 0 && idx < len(lower)-1 {
|
|
if canonical, ok := allowedCanonical[lower[idx+1:]]; ok {
|
|
return canonical
|
|
}
|
|
}
|
|
loose := toolNameLoosePattern.ReplaceAllString(lower, "")
|
|
if loose == "" {
|
|
return ""
|
|
}
|
|
for candidateLower, canonical := range allowedCanonical {
|
|
if toolNameLoosePattern.ReplaceAllString(candidateLower, "") == loose {
|
|
return canonical
|
|
}
|
|
}
|
|
return ""
|
|
}
|