|
1 |
|
2 -- DATA FORM FIELD |
|
3 |
|
4 local F = { } |
|
5 local M = { } |
|
6 M.__index = M |
|
7 |
|
8 -- field.new -- create new field |
|
9 -- field:index -- get index |
|
10 -- field:type -- get type |
|
11 -- field:name -- get var |
|
12 -- field:desc -- get label, desc |
|
13 -- field:value -- get/set value |
|
14 -- field:values -- get values |
|
15 -- field:clear -- clear value |
|
16 -- field:options -- get options |
|
17 -- field:required -- get required |
|
18 |
|
19 function F.new ( args ) |
|
20 local obj = { |
|
21 t = args.type, |
|
22 l = args.label, |
|
23 d = args.desc, |
|
24 o = args.options, -- XXX |
|
25 v = args.value, -- XXX |
|
26 r = args.required, |
|
27 n = args.var, |
|
28 i = args.index, -- XXX |
|
29 } |
|
30 setmetatable ( obj, M ) |
|
31 return obj |
|
32 end |
|
33 |
|
34 function M.index ( obj ) |
|
35 return obj.i |
|
36 end |
|
37 |
|
38 function M.type ( obj ) |
|
39 return obj.t |
|
40 end |
|
41 |
|
42 function M.name ( obj ) |
|
43 return obj.n |
|
44 end |
|
45 |
|
46 function M.desc ( obj ) |
|
47 return obj.l, obj.d |
|
48 end |
|
49 |
|
50 function M.options ( obj ) |
|
51 return pairs ( obj.o ) |
|
52 end |
|
53 |
|
54 function M.value ( obj, value ) |
|
55 local ftype = obj.t |
|
56 if value == nil then |
|
57 -- XXX |
|
58 return obj.v |
|
59 else |
|
60 if ftype == 'jid-multi' or ftype == 'list-multi' or ftype == 'text-multi' then |
|
61 table.insert ( obj.v, value ) |
|
62 else |
|
63 obj.v = value |
|
64 end |
|
65 end |
|
66 end |
|
67 |
|
68 function M.values ( obj ) |
|
69 local ftype = obj.t |
|
70 if ftype == 'jid-multi' or ftype == 'list-multi' or ftype == 'text-multi' then |
|
71 return ipairs ( obj.v ) |
|
72 else |
|
73 return |
|
74 function ( arg ) |
|
75 if not arg then |
|
76 return obj.v |
|
77 else |
|
78 return nil |
|
79 end |
|
80 end, nil |
|
81 end |
|
82 end |
|
83 |
|
84 function M.clear ( obj ) |
|
85 local ftype = obj.t |
|
86 if ftype == 'jid-multi' or ftype == 'list-multi' or ftype == 'text-multi' then |
|
87 obj.v = { } |
|
88 else |
|
89 obj.v = '' |
|
90 end |
|
91 end |
|
92 |
|
93 function M.required ( obj ) |
|
94 return obj.r |
|
95 end |
|
96 |
|
97 return F |
|
98 |
|
99 -- vim: se ts=4: -- |