// IsVersion returns true if the string is a version.

IsVersion returns true if the string is a version.
// IsVersion returns true if the string is a version .
func isVersion(s string) bool {
	hasPunct := false
	onlyNumber := true
	onlyHexLetter := true
	for _, r := range s {
		isNumber := unicode.IsNumber(r)
		isLetter := unicode.IsLetter(r)
		hasPunct = hasPunct || unicode.IsPunct(r)
		onlyNumber = onlyNumber && isNumber
		if isLetter {
			low := unicode.ToLower(r)
			onlyHexLetter = onlyHexLetter && low <= 'f'
		}
	}
	if hasPunct {
		return true
	}
	if onlyHexLetter == false {
		return true
	}
	num, err := strconv.ParseInt(s, 10, 64)
	if err == nil {
		if num > 100 {
			return false 
		}
	}
	if len(s) > 5 && onlyHexLetter {
		return false 
	}
	return true
}
func isVersion ( s string ) bool { hasPunct := false onlyNumber := true onlyHexLetter := true for _ , r := range s { isNumber := unicode . IsNumber ( r ) isLetter := unicode . IsLetter ( r ) hasPunct = hasPunct || unicode . IsPunct ( r ) onlyNumber = onlyNumber && isNumber if isLetter { low := unicode . ToLower ( r ) onlyHexLetter = onlyHexLetter && low <= 'f' } } if hasPunct { return true } if onlyHexLetter == false { return true } num , err := strconv . ParseInt ( s , 10 , 64 ) if err == nil { if num > 100 { return false } } if len ( s ) > 5 && onlyHexLetter { return false } return true }
IsVersion returns true if the string is a version.
IsVersion returns true if the string is a version .
// numeric revision.
 // hex revision
