summaryrefslogtreecommitdiffstats
path: root/acf/model/set.lua
diff options
context:
space:
mode:
Diffstat (limited to 'acf/model/set.lua')
-rw-r--r--acf/model/set.lua34
1 files changed, 12 insertions, 22 deletions
diff --git a/acf/model/set.lua b/acf/model/set.lua
index 2ab9d6d..47eeaa8 100644
--- a/acf/model/set.lua
+++ b/acf/model/set.lua
@@ -10,40 +10,30 @@ local npairs = require('acf.model.node').pairs
local object = require('acf.object')
-local function find(set, value)
- for i, member in npairs(set) do
- if member == value then return i end
- end
-end
-
-
-Set = object.class(require('acf.model.node').Collection)
+Set = object.class(require('acf.model.node').List)
function Set:init(context, params)
assert(not object.isinstance(params.field, TreeNode))
object.super(self, Set):init(context, params)
+ local function find(value)
+ for i, member in npairs(self) do
+ if member == value then return i end
+ end
+ end
+
local mt = getmetatable(self)
mt.meta.type = 'set'
- function mt.get(k, create) return (create or find(self, k)) and k end
+ function mt.get(k, create) return (create or find(k)) and k end
function mt.__newindex(t, k, v)
assert(v == nil)
- local i = find(self, k)
+ local i = find(k)
if not i then return end
-
- local len = #mt.members()
- while i < len do
- mt.save(i, mt.load(i + 1))
- i = i + 1
- end
- mt.save(len, nil)
+ mt.save(i, nil)
end
-end
-
-function add(set, value)
- local mt = getmetatable(set)
- if not find(set, value) then mt.save(#mt.members() + 1, value) end
+ local insert = mt.insert
+ function mt.insert(v) if not find(v) then insert(v) end end
end