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