diff options
-rw-r--r-- | .luacheckrc | 1 | ||||
-rw-r--r-- | CHANGES | 1 | ||||
-rw-r--r-- | core/features.lua | 1 | ||||
-rw-r--r-- | core/moduleapi.lua | 14 |
4 files changed, 17 insertions, 0 deletions
diff --git a/.luacheckrc b/.luacheckrc index 9d89fbe6..7aaade08 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -75,6 +75,7 @@ files["plugins/"] = { "module.get_option_boolean", "module.get_option_enum", "module.get_option_inherited_set", + "module.get_option_integer", "module.get_option_number", "module.get_option_path", "module.get_option_period", @@ -43,6 +43,7 @@ TRUNK - Config interface API can require that string values be picked from a provided set - Acceptable interval can be specified for number options - Method for parsing time periods / intervals from config +- Method for retrieving integer settings from config ## Changes 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 |