Files
steampipe/pkg/utils/range.go
2023-06-05 15:17:26 +01:00

30 lines
783 B
Go

package utils
type RangeConstraint struct {
minimum int
maximum int
}
// Constrain a number to be within a range.
func (r *RangeConstraint) Constrain(value int) int {
if value > r.maximum {
return r.maximum
}
if value < r.minimum {
return r.minimum
}
return value
}
func NewRangeConstraint(minimum int, maximum int) RangeConstraint {
if minimum > maximum {
panic("invalid range parameters - minimum > maximum")
}
return RangeConstraint{minimum: minimum, maximum: maximum}
}
// MapRange Re-maps a number from one range to another.
func MapRange(value int, valueRange RangeConstraint, desiredRange RangeConstraint) int {
return (value-valueRange.minimum)*(desiredRange.maximum-desiredRange.minimum)/(valueRange.maximum-valueRange.minimum) + desiredRange.minimum
}