More work on porting the diff kitten

This commit is contained in:
Kovid Goyal
2023-03-17 16:31:58 +05:30
parent bf1f0c00f4
commit 293c0ab845
4 changed files with 330 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ package utils
import (
"fmt"
"regexp"
"sort"
"golang.org/x/exp/constraints"
@@ -143,3 +144,15 @@ func Memset[T any](dest []T, pattern ...T) []T {
}
return dest
}
var ControlCodesPat = (&Once[*regexp.Regexp]{Run: func() *regexp.Regexp {
return regexp.MustCompile("[\x00-\x09\x0b-\x1f\x7f\x80-\x9f]")
}}).Get
func SanitizeControlCodes(raw string, replace_with ...string) string {
r := ""
if len(replace_with) > 0 {
r = replace_with[0]
}
return ControlCodesPat().ReplaceAllLiteralString(raw, r)
}