rev |
line source |
bsw@51
|
1 function util.autoapi_xml(args)
|
bsw@51
|
2 local selector = assert(args.selector)
|
bsw@51
|
3 local fields = assert(args.fields)
|
bsw@51
|
4 local rows = selector:exec()
|
bsw@51
|
5 slot.set_layout("xml")
|
bsw@51
|
6 slot.put("<initiative_list>\n")
|
bsw@51
|
7 for i_row, row in ipairs(rows) do
|
bsw@51
|
8 slot.put(" <initiative>\n")
|
bsw@51
|
9 for i_field, field in ipairs(fields) do
|
bsw@51
|
10 slot.put(" <", field.name, ">")
|
bsw@51
|
11 local value
|
bsw@51
|
12 if field.func then
|
bsw@51
|
13 value = field.func(row)
|
bsw@51
|
14 elseif field.field then
|
bsw@51
|
15 value = row[field.name]
|
bsw@51
|
16 end
|
bsw@51
|
17 if value then
|
bsw@51
|
18 slot.put(encode.html(tostring(value)))
|
bsw@51
|
19 end
|
bsw@51
|
20 slot.put("</", field.name, ">\n")
|
bsw@51
|
21 end
|
bsw@51
|
22 slot.put(" </initiative>\n")
|
bsw@51
|
23 end
|
bsw@51
|
24 slot.put("</initiative_list>\n")
|
bsw@51
|
25 end
|
bsw@51
|
26
|
bsw@51
|
27 function util.autoapi_json(args)
|
bsw@51
|
28 slot.set_layout("blank")
|
bsw@51
|
29 local selector = assert(args.selector)
|
bsw@51
|
30 local fields = assert(args.fields)
|
bsw@51
|
31 local rows = selector:exec()
|
bsw@51
|
32 slot.put("{\n")
|
bsw@51
|
33 for i_row, row in ipairs(rows) do
|
bsw@51
|
34 slot.put(" {\n")
|
bsw@51
|
35 for i_field, field in ipairs(fields) do
|
bsw@51
|
36 slot.put(" ", field.name, ": ")
|
bsw@51
|
37 local value
|
bsw@51
|
38 if field.func then
|
bsw@51
|
39 value = field.func(row)
|
bsw@51
|
40 elseif field.field then
|
bsw@51
|
41 value = row[field.name]
|
bsw@51
|
42 end
|
bsw@51
|
43 slot.put(encode.json(value))
|
bsw@51
|
44 slot.put(",\n")
|
bsw@51
|
45 end
|
bsw@51
|
46 slot.put(" },\n")
|
bsw@51
|
47 end
|
bsw@51
|
48 slot.put("}\n")
|
bsw@51
|
49 end
|
bsw@51
|
50
|
bsw@51
|
51 function util.autoapi(args)
|
bsw@51
|
52 local selector = assert(args.selector)
|
bsw@51
|
53 local fields = assert(args.fields)
|
bsw@51
|
54 local api_engine = assert(args.api_engine)
|
bsw@51
|
55
|
bsw@51
|
56 selector:reset_fields()
|
bsw@51
|
57
|
bsw@51
|
58 for i_field, field in ipairs(fields) do
|
bsw@51
|
59 if field.field then
|
bsw@51
|
60 selector:add_field(field.field, field.name)
|
bsw@51
|
61 end
|
bsw@51
|
62 end
|
bsw@51
|
63
|
bsw@51
|
64 if api_engine == "xml" then
|
bsw@51
|
65 util.autoapi_xml{
|
bsw@51
|
66 selector = selector,
|
bsw@51
|
67 fields = fields
|
bsw@51
|
68 }
|
bsw@51
|
69 elseif api_engine == "json" then
|
bsw@51
|
70 util.autoapi_json{
|
bsw@51
|
71 selector = selector,
|
bsw@51
|
72 fields = fields
|
bsw@51
|
73 }
|
bsw@51
|
74 end
|
bsw@51
|
75
|
bsw@51
|
76 end |