diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-10-14 19:19:50 +0300 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-10-14 19:49:57 +0300 |
commit | e55dc995617a19fbc5772d7bd9fb3082a2d2b1f4 (patch) | |
tree | 33ddd87a1e3f0976da2d0817bd09ebc2169c2d56 /acf2/persistence/init.lua | |
parent | d15bdd8d9177e0b74a5f7a675ad09ea15a04bc86 (diff) | |
download | aconf-e55dc995617a19fbc5772d7bd9fb3082a2d2b1f4.tar.bz2 aconf-e55dc995617a19fbc5772d7bd9fb3082a2d2b1f4.tar.xz |
persistence: boolean/string conversion
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 |