in utils.go [59:93]
func unitToNumber(s string) uint64 {
s = strings.TrimSpace(s)
s = strings.ToUpper(s)
i := strings.IndexFunc(s, unicode.IsLetter)
if i == -1 {
bytes, err := strconv.ParseFloat(s, 64)
if err != nil || bytes <= 0 {
return 0
}
return uint64(bytes)
}
bytesString, multiple := s[:i], s[i:]
bytes, err := strconv.ParseFloat(bytesString, 64)
if err != nil || bytes <= 0 {
return 0
}
switch multiple {
case "T", "TB", "TIB":
return uint64(bytes * TERA)
case "G", "GB", "GIB":
return uint64(bytes * GIGA)
case "M", "MB", "MIB":
return uint64(bytes * MEGA)
case "K", "KB", "KIB":
return uint64(bytes * KILO)
case "B":
return uint64(bytes)
default:
return 0
}
}