Skip to content

Commit f99b102

Browse files
committed
feat: slight optimization, removed global var
1 parent 670b46d commit f99b102

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

sanitize.go

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,6 @@ var (
3636
scriptRegExp = regexp.MustCompile(`(?i)<(script|iframe|embed|object)[^>]*>.*</(script|iframe|embed|object)>`) // Scripts and embeds
3737
)
3838

39-
// emptySpace is an empty space for replacing
40-
var emptySpace = []byte("")
41-
4239
// ErrNilRegexp indicates that a nil regular expression was provided.
4340
var ErrNilRegexp = errors.New("regular expression cannot be nil")
4441

@@ -177,6 +174,7 @@ func BitcoinCashAddress(original string) string {
177174
b.WriteRune(r)
178175
}
179176
}
177+
180178
return b.String()
181179
}
182180

@@ -205,9 +203,8 @@ func BitcoinCashAddress(original string) string {
205203
// See the benchmarks in the `sanitize_benchmark_test.go` file.
206204
// See the fuzz tests in the `sanitize_fuzz_test.go` file.
207205
func Custom(original string, regExp string) string {
208-
209206
// Return the processed string or panic if regex fails
210-
return string(regexp.MustCompile(regExp).ReplaceAll([]byte(original), emptySpace))
207+
return regexp.MustCompile(regExp).ReplaceAllString(original, "")
211208
}
212209

213210
// CustomCompiled returns a sanitized string using a pre-compiled regular
@@ -262,11 +259,13 @@ func CustomCompiled(original string, re *regexp.Regexp) (string, error) {
262259
func Decimal(original string) string {
263260
var b strings.Builder
264261
b.Grow(len(original))
262+
265263
for _, r := range original {
266264
if unicode.IsDigit(r) || r == '.' || r == '-' {
267265
b.WriteRune(r)
268266
}
269267
}
268+
270269
return b.String()
271270
}
272271

@@ -361,7 +360,6 @@ func Domain(original string, preserveCase bool, removeWww bool) (string, error)
361360
// See the benchmarks in the `sanitize_benchmark_test.go` file.
362361
// See the fuzz tests in the `sanitize_fuzz_test.go` file.
363362
func Email(original string, preserveCase bool) string {
364-
365363
// Skip all work for empty string
366364
if original == "" {
367365
return original
@@ -383,6 +381,7 @@ func Email(original string, preserveCase bool) string {
383381
// Filter to valid email characters
384382
var b strings.Builder
385383
b.Grow(len(original))
384+
386385
for _, r := range original {
387386
valid := r == '@' || r == '.' || r == '_' || r == '-' || r == '+' ||
388387
(r >= '0' && r <= '9') ||
@@ -418,7 +417,6 @@ func Email(original string, preserveCase bool) string {
418417
// See the benchmarks in the `sanitize_benchmark_test.go` file.
419418
// See the fuzz tests in the `sanitize_fuzz_test.go` file.
420419
func FirstToUpper(original string) string {
421-
422420
// Avoid extra work if string is empty
423421
if len(original) == 0 {
424422
return original
@@ -471,6 +469,7 @@ func FormalName(original string) string {
471469
b.WriteRune(r)
472470
}
473471
}
472+
474473
return b.String()
475474
}
476475

@@ -493,7 +492,7 @@ func FormalName(original string) string {
493492
// See the benchmarks in the `sanitize_benchmark_test.go` file.
494493
// See the fuzz tests in the `sanitize_fuzz_test.go` file.
495494
func HTML(original string) string {
496-
return string(htmlRegExp.ReplaceAll([]byte(original), emptySpace))
495+
return htmlRegExp.ReplaceAllString(original, "")
497496
}
498497

499498
// IPAddress returns a sanitized IP address string for both IPv4 and IPv6 formats.
@@ -523,6 +522,7 @@ func IPAddress(original string) string {
523522
b.WriteRune(r)
524523
}
525524
}
525+
526526
ip := net.ParseIP(b.String())
527527
if ip == nil {
528528
return ""
@@ -592,6 +592,7 @@ func PhoneNumber(original string) string {
592592
b.WriteRune(r)
593593
}
594594
}
595+
595596
return b.String()
596597
}
597598

@@ -619,6 +620,7 @@ func PhoneNumber(original string) string {
619620
func PathName(original string) string {
620621
var b strings.Builder
621622
b.Grow(len(original))
623+
622624
for _, r := range original {
623625
switch {
624626
case '0' <= r && r <= '9':
@@ -631,6 +633,7 @@ func PathName(original string) string {
631633
b.WriteRune(r)
632634
}
633635
}
636+
634637
return b.String()
635638
}
636639

@@ -665,6 +668,7 @@ func Punctuation(original string) string {
665668
b.WriteRune(r)
666669
}
667670
}
671+
668672
return b.String()
669673
}
670674

@@ -695,6 +699,7 @@ func ScientificNotation(original string) string {
695699
b.WriteRune(r)
696700
}
697701
}
702+
698703
return b.String()
699704
}
700705

@@ -718,7 +723,7 @@ func ScientificNotation(original string) string {
718723
// See the benchmarks in the `sanitize_benchmark_test.go` file.
719724
// See the fuzz tests in the `sanitize_fuzz_test.go` file.
720725
func Scripts(original string) string {
721-
return string(scriptRegExp.ReplaceAll([]byte(original), emptySpace))
726+
return scriptRegExp.ReplaceAllString(original, "")
722727
}
723728

724729
// SingleLine returns a sanitized version of the input string as a single line of text.
@@ -753,6 +758,7 @@ func SingleLine(original string) string {
753758
b.WriteRune(r)
754759
}
755760
}
761+
756762
return b.String()
757763
}
758764

@@ -778,11 +784,13 @@ func SingleLine(original string) string {
778784
func Time(original string) string {
779785
var b strings.Builder
780786
b.Grow(len(original))
787+
781788
for _, r := range original {
782789
if unicode.IsDigit(r) || r == ':' {
783790
b.WriteRune(r)
784791
}
785792
}
793+
786794
return b.String()
787795
}
788796

@@ -810,13 +818,15 @@ func Time(original string) string {
810818
func URI(original string) string {
811819
var b strings.Builder
812820
b.Grow(len(original))
821+
813822
for _, r := range original {
814823
if unicode.IsLetter(r) || unicode.IsDigit(r) ||
815824
r == '-' || r == '_' || r == '/' || r == '?' ||
816825
r == '&' || r == '=' || r == '#' || r == '%' {
817826
b.WriteRune(r)
818827
}
819828
}
829+
820830
return b.String()
821831
}
822832

@@ -845,6 +855,7 @@ func URI(original string) string {
845855
func URL(original string) string {
846856
var b strings.Builder
847857
b.Grow(len(original))
858+
848859
for _, r := range original {
849860
if unicode.IsLetter(r) || unicode.IsDigit(r) ||
850861
r == '-' || r == '_' || r == '/' || r == ':' ||

0 commit comments

Comments
 (0)