Files
core/search/Normalize.go
Kleissner d494d46410 🔍 search algorithm! 🎉🎊🥳
2021-12-12 19:12:01 +01:00

43 lines
1.2 KiB
Go

/*
File Name: Normalizing.go
Copyright: 2021 Peernet s.r.o.
Author: Peter Kleissner
Normalizing text so that it can be hashed.
*/
package search
import (
"path"
"strings"
)
func sanitizeGeneric(filename string) string {
filename = strings.TrimSpace(filename)
filename = strings.ToLower(filename)
filename = strings.ToValidUTF8(filename, "")
return filename
}
// sanitizeInputTerm sanitizes a search term provided by the end user. It includes the generic rules that are done on indexing.
func sanitizeInputTerm(inputTerm string) (outputTerm string, isExact, isWildcard bool) {
inputTerm = sanitizeGeneric(inputTerm)
// detect and remove quotes at the beginning and end
isExact = false
if len(inputTerm) >= 2 && ((strings.HasPrefix(inputTerm, "\"") && strings.HasSuffix(inputTerm, "\"")) || (strings.HasPrefix(inputTerm, "'") && strings.HasSuffix(inputTerm, "'"))) {
inputTerm = inputTerm[1 : len(inputTerm)-1]
isExact = true
}
isWildcard = strings.Contains(inputTerm, "*")
return inputTerm, isExact, isWildcard
}
func filenameRemoveExtension(filename string) string {
return strings.TrimSuffix(filename, path.Ext(filename))
}