mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-09-05 20:07:56 +00:00
Add cc.expect.range (#790)
This commit is contained in:
@@ -88,7 +88,34 @@ local function field(tbl, index, ...)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function is_nan(num)
|
||||||
|
return num ~= num
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Expect a number to be within a specific range.
|
||||||
|
--
|
||||||
|
-- @tparam number num, The value to check.
|
||||||
|
-- @tparam number min The minimum value, if nil then `-math.huge` is used.
|
||||||
|
-- @tparam number max The maximum value, if nil then `math.huge` is used.
|
||||||
|
-- @return The given `value`.
|
||||||
|
-- @throws If the value is outside of the allowed range.
|
||||||
|
local function range(num, min, max)
|
||||||
|
expect(1, num, "number")
|
||||||
|
min = expect(2, min, "number", "nil") or -math.huge
|
||||||
|
max = expect(3, max, "number", "nil") or math.huge
|
||||||
|
if min > max then
|
||||||
|
error("min must be less than or equal to max)", 2)
|
||||||
|
end
|
||||||
|
|
||||||
|
if is_nan(num) or num < min or num > max then
|
||||||
|
error(("number outside of range (expected %s to be within %s and %s)"):format(num, min, max), 3)
|
||||||
|
end
|
||||||
|
|
||||||
|
return num
|
||||||
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
expect = expect,
|
expect = expect,
|
||||||
field = field,
|
field = field,
|
||||||
|
range = range,
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user