]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Add a simple toboolean function
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 19 Aug 2019 15:21:20 +0000 (16:21 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 19 Aug 2019 15:21:20 +0000 (16:21 +0100)
lualib/lua_util.lua

index 682a33bf5962e65e7528dc56fe7e9f8805a30041..363ce4a653b4a2f488b5f2fe6133d3831d4e0625 100644 (file)
@@ -1171,4 +1171,39 @@ exports.table_digest = function(t)
  return h:base32()
 end
 
+---[[[
+-- @function lua_util.toboolean(v)
+-- Converts a string or a number to boolean
+-- @param {string|number} v
+-- @return {boolean} v converted to boolean
+--]]]
+exports.toboolean = function(v)
+  local true_t = {
+    ['1'] = true,
+    ['true'] = true,
+    ['TRUE'] = true,
+    ['True'] = true,
+  };
+  local false_t = {
+    ['0'] = false,
+    ['false'] = false,
+    ['FALSE'] = false,
+    ['False'] = false,
+  };
+
+  if type(v) == 'string' then
+    if true_t[v] == true then
+      return true;
+    elseif false_t[v] == false then
+      return false;
+    else
+      return false, string.format( 'cannot convert %q to boolean', v);
+    end
+  elseif type(v) == 'number' then
+    return (not (v == 0))
+  else
+    return false, string.format( 'cannot convert %q to boolean', v);
+  end
+end
+
 return exports