Remove abbreviations to make decoded reports easier to read
This commit is contained in:
		@@ -9,25 +9,11 @@ type Speed string
 | 
			
		||||
 | 
			
		||||
// Speed units
 | 
			
		||||
const (
 | 
			
		||||
	MetersPerSecond   Speed = "MPS"
 | 
			
		||||
	KilometersPerHour Speed = "KMH"
 | 
			
		||||
	Knots             Speed = "KT"
 | 
			
		||||
	MetersPerSecond   Speed = "MetersPerSecond"
 | 
			
		||||
	KilometersPerHour Speed = "KilometersPerHour"
 | 
			
		||||
	Knots             Speed = "Knots"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var speedNames = map[Speed]string{
 | 
			
		||||
	MetersPerSecond:   "m/s",
 | 
			
		||||
	KilometersPerHour: "kph",
 | 
			
		||||
	Knots:             "kts",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (su Speed) String() string {
 | 
			
		||||
	name, ok := speedNames[su]
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return "<unknown>"
 | 
			
		||||
	}
 | 
			
		||||
	return name
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Convert converts a value from one unit to another
 | 
			
		||||
func (sf Speed) Convert(st Speed, val int) int {
 | 
			
		||||
	switch {
 | 
			
		||||
@@ -52,18 +38,16 @@ func (sf Speed) Convert(st Speed, val int) int {
 | 
			
		||||
// mps, m/s, kmh, kph, kt, and kts.
 | 
			
		||||
// This function is case-insensitive.
 | 
			
		||||
func ParseSpeed(s string) (Speed, bool) {
 | 
			
		||||
	if _, ok := speedNames[Speed(s)]; ok {
 | 
			
		||||
		return Speed(s), true
 | 
			
		||||
	switch strings.ToLower(s) {
 | 
			
		||||
	case "m/s", "mps", "meterspersecond", "meters per second":
 | 
			
		||||
		return MetersPerSecond, true
 | 
			
		||||
	case "kmh", "kph", "km/h", "kilometersperhour", "kilometers per hour":
 | 
			
		||||
		return KilometersPerHour, true
 | 
			
		||||
	case "kt", "kts", "knot", "knots":
 | 
			
		||||
		return Knots, true
 | 
			
		||||
	default:
 | 
			
		||||
		return "", false
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for su, name := range speedNames {
 | 
			
		||||
		if strings.EqualFold(s, name) ||
 | 
			
		||||
			strings.EqualFold(s, string(su)) {
 | 
			
		||||
			return su, true
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return "", false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Distance represents a unit of distance
 | 
			
		||||
@@ -71,29 +55,16 @@ type Distance string
 | 
			
		||||
 | 
			
		||||
// Distance units
 | 
			
		||||
const (
 | 
			
		||||
	StatuteMiles Distance = "SM"
 | 
			
		||||
	Meters       Distance = "M"
 | 
			
		||||
	Miles  Distance = "Miles"
 | 
			
		||||
	Meters Distance = "Meters"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var distanceNames = map[Distance]string{
 | 
			
		||||
	StatuteMiles: "mi",
 | 
			
		||||
	Meters:       "m",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (du Distance) String() string {
 | 
			
		||||
	name, ok := distanceNames[du]
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return "<unknown>"
 | 
			
		||||
	}
 | 
			
		||||
	return name
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Convert converts a value from one unit to another
 | 
			
		||||
func (df Distance) Convert(dt Distance, val float64) float64 {
 | 
			
		||||
	switch {
 | 
			
		||||
	case df == StatuteMiles && dt == Meters:
 | 
			
		||||
	case df == Miles && dt == Meters:
 | 
			
		||||
		return val * 1609
 | 
			
		||||
	case df == Meters && dt == StatuteMiles:
 | 
			
		||||
	case df == Meters && dt == Miles:
 | 
			
		||||
		return val / 1609
 | 
			
		||||
	default:
 | 
			
		||||
		return val
 | 
			
		||||
@@ -103,16 +74,12 @@ func (df Distance) Convert(dt Distance, val float64) float64 {
 | 
			
		||||
// ParseDistance parses a speed value. Valid inputs include:
 | 
			
		||||
// sm, mi, and m. This function is case-insensitive.
 | 
			
		||||
func ParseDistance(s string) (Distance, bool) {
 | 
			
		||||
	if _, ok := distanceNames[Distance(s)]; ok {
 | 
			
		||||
		return Distance(s), true
 | 
			
		||||
	switch strings.ToLower(s) {
 | 
			
		||||
	case "sm", "mi", "mile", "miles":
 | 
			
		||||
		return Miles, true
 | 
			
		||||
	case "m", "meter", "meters":
 | 
			
		||||
		return Meters, true
 | 
			
		||||
	default:
 | 
			
		||||
		return "", false
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for d, name := range distanceNames {
 | 
			
		||||
		if strings.EqualFold(s, name) ||
 | 
			
		||||
			strings.EqualFold(s, string(d)) {
 | 
			
		||||
			return d, true
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return "", false
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user