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