func NormalizeAdxIdentifier()

in schema/schema.go [214:245]


func NormalizeAdxIdentifier(s string) string {
	// Most common to not need normalization in this path. Only allocate if needed.
	bytesToRemove := 0
	for i := 0; i < len(s); i++ {
		// ADX appears to only accept ASCII letters/numbers
		if !(s[i] >= 'a' && s[i] <= 'z' || s[i] >= '0' && s[i] <= '9' || s[i] >= 'A' && s[i] <= 'Z') {
			bytesToRemove += 1
		}
	}

	if bytesToRemove == 0 && len(s) <= max_adx_identifier_length {
		return s
	}
	destSize := len(s) - bytesToRemove

	var b strings.Builder
	if destSize < max_adx_identifier_length {
		b.Grow(destSize)
	} else {
		b.Grow(max_adx_identifier_length)
	}
	for i := 0; i < len(s); i++ {
		if s[i] >= 'a' && s[i] <= 'z' || s[i] >= '0' && s[i] <= '9' || s[i] >= 'A' && s[i] <= 'Z' {
			b.WriteByte(s[i])
			if b.Len() >= max_adx_identifier_length {
				break
			}
		}
	}

	return b.String()
}