Lm separation, privacy
* Library parts moved to lm.*
* mc_* renamed to plain names
* Privacy lists suppart (not tested)
-- DATA FORM FIELD
local F = { }
local M = { }
M.__index = M
-- field.new -- create new field
-- field:index -- get index
-- field:type -- get type
-- field:name -- get var
-- field:desc -- get label, desc
-- field:value -- get/set value
-- field:values -- get values
-- field:clear -- clear value
-- field:options -- get options
-- field:required -- get required
function F.new ( args )
local obj = {
t = args.type,
l = args.label,
d = args.desc,
o = args.options, -- XXX
v = args.value, -- XXX
r = args.required,
n = args.var,
i = args.index, -- XXX
}
setmetatable ( obj, M )
return obj
end
function M.index ( obj )
return obj.i
end
function M.type ( obj )
return obj.t
end
function M.name ( obj )
return obj.n
end
function M.desc ( obj )
return obj.l, obj.d
end
function M.options ( obj )
return pairs ( obj.o )
end
function M.value ( obj, value )
local ftype = obj.t
if value == nil then
-- XXX
return obj.v
else
if ftype == 'jid-multi' or ftype == 'list-multi' or ftype == 'text-multi' then
table.insert ( obj.v, value )
else
obj.v = value
end
end
end
function M.values ( obj )
local ftype = obj.t
if ftype == 'jid-multi' or ftype == 'list-multi' or ftype == 'text-multi' then
return ipairs ( obj.v )
else
return
function ( arg )
if not arg then
return obj.v
else
return nil
end
end, nil
end
end
function M.clear ( obj )
local ftype = obj.t
if ftype == 'jid-multi' or ftype == 'list-multi' or ftype == 'text-multi' then
obj.v = { }
else
obj.v = ''
end
end
function M.required ( obj )
return obj.r
end
return F
-- vim: se ts=4: --