/
Normalize.go
42 lines (32 loc) · 1.21 KB
/
Normalize.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*
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))
}