summaryrefslogtreecommitdiffstats
path: root/acf2/model
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-01-17 14:47:54 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-01-17 15:34:53 +0200
commitc0be1f26ec77439770ded5482142f1e3237eb4e6 (patch)
tree50d021ee38e980e4e9fbcb05177ca99b665029ed /acf2/model
parent1ea210d97969bc8da465c0f35b2abd3678af08e3 (diff)
downloadacf2-c0be1f26ec77439770ded5482142f1e3237eb4e6.tar.bz2
acf2-c0be1f26ec77439770ded5482142f1e3237eb4e6.tar.xz
model: make '_' and '-' interchangeable in model field namesv0.2.1
Diffstat (limited to 'acf2/model')
-rw-r--r--acf2/model/aaa.lua2
-rw-r--r--acf2/model/model.lua7
2 files changed, 8 insertions, 1 deletions
diff --git a/acf2/model/aaa.lua b/acf2/model/aaa.lua
index a5d6196..dcd9a58 100644
--- a/acf2/model/aaa.lua
+++ b/acf2/model/aaa.lua
@@ -37,7 +37,7 @@ end
local User = M.new()
User.password = Password
-User['real-name'] = M.String
+User.real_name = M.String
User.superuser = M.Boolean{default=false}
User.roles = M.Set{type=M.Reference{scope='../../../roles'}}
diff --git a/acf2/model/model.lua b/acf2/model/model.lua
index 6ff398a..2472a3c 100644
--- a/acf2/model/model.lua
+++ b/acf2/model/model.lua
@@ -45,6 +45,9 @@ function M.to_field(obj, params)
end
+local function normalize_key(key) return key:gsub('_', '-') end
+
+
M.Action = class(Member)
function M.Action:init(params)
@@ -84,6 +87,7 @@ function M.new(base)
function mt.__newindex(t, k, v)
assert(v)
+ k = normalize_key(k)
local override = t[k]
if type(v) == 'table' then v = to_member(v) end
@@ -141,6 +145,8 @@ function M.Model:init(context)
function mt.load(k, options)
local v = mt.class[k]
+ k = normalize_key(k)
+ if not v then v = mt.class[k] end
if isinstance(v, Field) then
return BoundMember(self, k, v):load(options)
@@ -179,6 +185,7 @@ function M.Model:init(context)
function mt.mmeta(name) return mt.member(name):meta() end
function mt.save(k, v)
+ k = normalize_key(k)
mt.check_removable(k, v)
return mt.member(k, false, Field):save(v)
end