From c22772a0aff8fd625c70582db818c948bfed8543 Mon Sep 17 00:00:00 2001 From: zomo Date: Thu, 3 Jul 2025 01:37:15 -0500 Subject: [PATCH] improved string cleaning --- main.go | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/main.go b/main.go index e3ad989..6cc27c4 100644 --- a/main.go +++ b/main.go @@ -9,7 +9,6 @@ import ( "log" "os" "path" - "regexp" "strings" "text/template" "time" @@ -451,19 +450,28 @@ func moveFile(source, destination string) (err error) { } func cleanPath(str string) string { - return doClean(str, `[<>:"|?*]`) + return doClean(str, func(r rune) rune { + switch r { + case '<', '>', ':', '\'', '"', '|', '?', '*': + return '_' + } + return r + }) } func cleanTemplateVariable(str string) string { - return doClean(str, `[<>:"|?*/\\.]`) + return doClean(str, func(r rune) rune { + switch r { + case '<', '>', ':', '\'', '"', '|', '?', '*', '/', '\\', '.': + return '_' + } + return r + }) } -func doClean(str string, reg string) string { - re := regexp.MustCompile(reg) - s := re.ReplaceAllString(str, "") - - t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC) - result, _, err := transform.String(t, s) +func doClean(str string, mapping func(rune) rune) string { + t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC, runes.Map(mapping)) + result, _, err := transform.String(t, str) if err != nil { panic(err) }