Software /
code /
prosody
Comparison
util/multitable.lua @ 554:9a695724681d
MultiTable: Remove all empty sub-tables when elements are removed
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Fri, 05 Dec 2008 05:24:10 +0500 |
parent | 552:6db1f41e475a |
child | 568:b2464849c1b0 |
comparison
equal
deleted
inserted
replaced
552:6db1f41e475a | 554:9a695724681d |
---|---|
20 | 20 |
21 | 21 |
22 local select = select; | 22 local select = select; |
23 local t_insert = table.insert; | 23 local t_insert = table.insert; |
24 local pairs = pairs; | 24 local pairs = pairs; |
25 local next = next; | |
25 | 26 |
26 module "multitable" | 27 module "multitable" |
27 | 28 |
28 local function get(self, ...) | 29 local function get(self, ...) |
29 local t = self.data; | 30 local t = self.data; |
53 t[key] = nil; | 54 t[key] = nil; |
54 end | 55 end |
55 end | 56 end |
56 local k = select(n, ...); | 57 local k = select(n, ...); |
57 if k then | 58 if k then |
58 r(t[k], n+1, _end, ...); | 59 v = t[k]; |
60 if v then | |
61 r(v, n+1, _end, ...); | |
62 if not next(v) then | |
63 t[k] = nil; | |
64 end | |
65 end | |
59 else | 66 else |
60 for _,b in pairs(t) do | 67 for _,b in pairs(t) do |
61 r(b, n+1, _end, ...); | 68 r(b, n+1, _end, ...); |
69 if not next(b) then | |
70 t[_] = nil; | |
71 end | |
62 end | 72 end |
63 end | 73 end |
64 end | 74 end |
65 | 75 |
66 local function remove(self, ...) | 76 local function remove(self, ...) |