summaryrefslogtreecommitdiff
path: root/server/validate
diff options
context:
space:
mode:
Diffstat (limited to 'server/validate')
-rw-r--r--server/validate/validate.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/server/validate/validate.go b/server/validate/validate.go
new file mode 100644
index 0000000..4415557
--- /dev/null
+++ b/server/validate/validate.go
@@ -0,0 +1,41 @@
+package validate
+
+import (
+ "strings"
+ "unicode"
+)
+
+func Name(name string) bool {
+ if len(Fold(name)) == 0 || len(name) >= 256 {
+ return false
+ }
+ for _, r := range name {
+ if unicode.IsControl(r) {
+ return false
+ }
+ }
+ return true
+}
+
+func Fold(s string) string {
+ var sb strings.Builder
+ var wasSpace bool
+ for _, r := range s {
+ for r < unicode.SimpleFold(r) {
+ r = unicode.SimpleFold(r)
+ }
+ if !unicode.IsPrint(r) {
+ continue
+ }
+ if r == ' ' {
+ if wasSpace {
+ continue
+ }
+ wasSpace = true
+ } else {
+ wasSpace = false
+ }
+ sb.WriteRune(r)
+ }
+ return strings.TrimSpace(sb.String())
+}