Added util.multitable.set
authorWaqas Hussain <waqas20@gmail.com>
Sat, 27 Dec 2008 03:27:26 +0000 (08:27 +0500)
committerWaqas Hussain <waqas20@gmail.com>
Sat, 27 Dec 2008 03:27:26 +0000 (08:27 +0500)
util/multitable.lua

index ce38e04d0df3805effff41e10013a36a62314c0f..414f6cb532d2de267c5c0edcd4411731dfed99ae 100644 (file)
@@ -47,14 +47,25 @@ local function add(self, ...)
        t_insert(t, (select(count, ...)));
 end
 
+local function set(self, ...)
+       local t = self.data;
+       local count = select('#', ...);
+       for n = 1,count-2 do
+               local key = select(n, ...);
+               local tab = t[key];
+               if not tab then tab = {}; t[key] = tab; end
+               t = tab;
+       end
+       t[(select(count-1, ...))] = (select(count, ...));
+end
+
 local function r(t, n, _end, ...)
        if t == nil then return; end
-       if n > _end then
-               for key in pairs(t) do
-                       t[key] = nil;
-               end
-       end
        local k = select(n, ...);
+       if n == _end then
+               t[k] = nil;
+               return;
+       end
        if k then
                v = t[k];
                if v then
@@ -87,6 +98,7 @@ function new()
                data = {};
                get = get;
                add = add;
+               set = set;
                remove = remove;
        };
 end