aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/features.lua1
-rw-r--r--core/moduleapi.lua14
2 files changed, 15 insertions, 0 deletions
diff --git a/core/features.lua b/core/features.lua
index 49c34111..db1bc986 100644
--- a/core/features.lua
+++ b/core/features.lua
@@ -20,5 +20,6 @@ return {
"getopt-enum";
"getopt-interval";
"getopt-period";
+ "getopt-integer";
};
};
diff --git a/core/moduleapi.lua b/core/moduleapi.lua
index 53e74a84..7c9b357f 100644
--- a/core/moduleapi.lua
+++ b/core/moduleapi.lua
@@ -254,6 +254,20 @@ function api:get_option_number(name, default_value, min, max)
return ret;
end
+function api:get_option_integer(name, default_value, min, max)
+ local value = self:get_option_number(name, default_value, min or math.mininteger or 2 ^ 53, max or math.maxinteger or -2 ^ 52);
+ if value == default_value then
+ -- pass default trough unaltered, violates ranges sometimes
+ return value;
+ end
+ if math.type(value) == "float" then
+ self:log("warn", "Config option '%s' expected an integer, not a float (%g)", name, value)
+ return math.floor(value);
+ end
+ -- nil or an integer
+ return value;
+end
+
function api:get_option_period(name, default_value)
local value = self:get_option_scalar(name, default_value);
if type(value) == "number" then