mirror of
https://github.com/PeernetOfficial/core.git
synced 2026-07-17 02:47:51 +01:00
43 lines
1.2 KiB
Go
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"
|
|
)
|
|
|
|
// sanitizeGeneric sanitizes the text. It intentionally does not lowercase the text so CamelCase can be detcted later.
|
|
func sanitizeGeneric(filename string) string {
|
|
filename = strings.ToValidUTF8(filename, "")
|
|
filename = strings.TrimSpace(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))
|
|
}
|