in go/fury/meta/meta_string_encoder.go [198:230]
func (e *Encoder) computeStringStatistics(input string) *stringStatistics {
digitCount, upperCount := 0, 0
canLowerSpecialEncoded := true
canLowerUpperDigitSpecialEncoded := true
for _, c := range []byte(input) {
if canLowerUpperDigitSpecialEncoded {
if !(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' ||
c >= '0' && c <= '9' || c == e.specialChar1 || c == e.specialChar2) {
canLowerUpperDigitSpecialEncoded = false
}
}
if canLowerSpecialEncoded {
if !(c >= 'a' && c <= 'z' || c == '.' || c == '_' || c == '$' || c == '|') {
canLowerSpecialEncoded = false
}
}
if c >= '0' && c <= '9' {
digitCount++
}
if c >= 'A' && c <= 'Z' {
upperCount++
}
}
return &stringStatistics{
digitCount: digitCount,
upperCount: upperCount,
canLowerSpecialEncoded: canLowerSpecialEncoded,
canLowerUpperDigitSpecialEncoded: canLowerUpperDigitSpecialEncoded,
}
}