--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/form_field.lua Sat Mar 28 19:43:12 2009 +0200
@@ -0,0 +1,99 @@
+
+-- 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: --