diff options
Diffstat (limited to 'acf2/persistence/init.lua')
-rw-r--r-- | acf2/persistence/init.lua | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/acf2/persistence/init.lua b/acf2/persistence/init.lua index 1dca61d..cd043f4 100644 --- a/acf2/persistence/init.lua +++ b/acf2/persistence/init.lua @@ -9,7 +9,9 @@ local loadmods = require('acf2.loader') local topology = require('acf2.model.root').topology local object = require('acf2.object') local pth = require('acf2.path') + local util = require('acf2.util') +local contains = util.contains local stringy = require('stringy') @@ -52,8 +54,17 @@ function DataStore:get(path) if t == 'string' then res = tostring(res) elseif t == 'number' then res = tonumber(res) + elseif t == 'boolean' then - res = (res and res ~= 'false') and true or false + if atype == 'string' then res = res:lower() end + if res == 1 or contains({'1', 't', 'true', 'y', 'yes'}, res) then + res = true + elseif res == 0 or contains( + {'0', 'f', 'false', 'n', 'no'}, res + ) then + res = false + else res = res and true or false end + elseif t == 'reference' then assert(atype == 'string') else assert(false) end end |