From 1826d93467341dec9947e0592bc1e9b7deddcf51 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Sun, 30 Mar 2014 15:39:03 +1000 Subject: Fix up using aliases in Stufflets, plus it helps if the alias is in the right call. lol --- ClientHamr/GuiLua/skang.lua | 13 +++++++++---- ClientHamr/GuiLua/test.lua | 13 ++++++------- 2 files changed, 15 insertions(+), 11 deletions(-) (limited to 'ClientHamr') diff --git a/ClientHamr/GuiLua/skang.lua b/ClientHamr/GuiLua/skang.lua index a742845..e0123fb 100644 --- a/ClientHamr/GuiLua/skang.lua +++ b/ClientHamr/GuiLua/skang.lua @@ -479,10 +479,15 @@ Thing.__newindex = function (module, key, value) local valueMeta if 'table' == type(value) then -- Coz setting it via modThing screws with the __index stuff somehow. - valueMeta = getmetatable(modThing.__values[name]) - if valueMeta then - for k, v in pairs(value) do - valueMeta.__values[k] = v + local oldValue = modThing.__values[name] + if 'table' == type(oldValue) then + valueMeta = getmetatable(oldValue) + if valueMeta then + for k, v in pairs(value) do + local newK = valueMeta.__stuff[k] + if newK then newK = newK.names[1] else newK = k end + valueMeta.__values[newK] = v + end end end end diff --git a/ClientHamr/GuiLua/test.lua b/ClientHamr/GuiLua/test.lua index d74e22c..9f98520 100644 --- a/ClientHamr/GuiLua/test.lua +++ b/ClientHamr/GuiLua/test.lua @@ -125,8 +125,8 @@ skang.thing{'a', module=stuff, help = 'A test stufflet'} skang.thing{'b', module=stuff.t, help = 'A sub stufflet'} skang.thing{'c', module=stuff.t, help = 'Another sub stufflet'} skang.thing{'s', module=stuff, help = 'A Stuff', types='table'} -skang.thing{'sa', module=stuff.s, help = 'A stufflet in a Stuff'} -skang.thing{'sb', module=stuff.s, help = 'Another stufflet in a Stuff'} +skang.thing{'sa,a', module=stuff.s, help = 'A stufflet in a Stuff'} +skang.thing{'sb,b', module=stuff.s, help = 'Another stufflet in a Stuff'} print('*********************************') skang.fixNames(skang, 'skang') @@ -140,11 +140,12 @@ print(skang.get(stuff, 'a', 'help')) print(skang.get(stuff.t, 'b', 'help')) print(skang.get(stuff.t, 'c', 'help')) print(skang.get(stuff, 's', 'help')) -print(skang.get(stuff.s, 'sa,a', 'help')) -print(skang.get(stuff.s, 'sb,b', 'help')) +print(skang.get(stuff.s, 'sa', 'help')) +print(skang.get(stuff.s, 'sb', 'help')) skang.thing{'baz,b', module=test, help = 'A test stufflet for test'} print(skang.get(test, 'b', 'help')) print(skang.get(test, 'f', 'help')) +--skang.printTableStart(getmetatable(stuff.s), '', 'stuff.s metatable') -- Should fail isValid() stuff.a = 1 stuff.t.b = '2' @@ -154,12 +155,10 @@ test.f = 5 test_c.cbar = '666' -- This one doesn't actually exist. test_c.bar = '7' --- The sa should fail isValid() stuff.s.sa = true stuff.s.sb = 22 --- TODO - This one should fail, but doesn't. It goes through to the real stuff.s table. stuff.s.b = 33 --- TODO - And the 'a' one just gets dropped. +-- NOTE - This triggers isValid twice for each table element. stuff.s = {a=8, sb='9'} stuff.s.sb = 44 print('') -- cgit v1.1