liquid_feedback_frontend
view env/util/autoapi.lua @ 71:4f43d2a96c07
Added six Esperanto translations
| author | Dinu Gherman | 
|---|---|
| date | Wed May 05 17:57:32 2010 +0200 (2010-05-05) | 
| parents | 88ac7798b562 | 
| children | 733f65c0c0a0 | 
 line source
     1 function util.autoapi_xml(args)
     2   local selector = assert(args.selector)
     3   local fields = assert(args.fields)
     4   local rows = selector:exec()
     5   slot.set_layout("xml")
     6   slot.put("<initiative_list>\n")
     7   for i_row, row in ipairs(rows) do
     8     slot.put("  <initiative>\n")
     9     for i_field, field in ipairs(fields) do
    10       slot.put("    <", field.name, ">")
    11       local value
    12       if field.func then
    13         value = field.func(row)
    14       elseif field.field then
    15         value = row[field.name]
    16       end
    17       if value ~= nil then
    18         slot.put(encode.html(tostring(value)))
    19       else
    20         slot.put("NULL")
    21       end
    22       slot.put("</", field.name, ">\n")
    23     end
    24     slot.put("  </initiative>\n")
    25   end
    26   slot.put("</initiative_list>\n")
    27 end
    29 function util.autoapi_json(args)
    30   slot.set_layout("blank")
    31   local selector = assert(args.selector)
    32   local fields = assert(args.fields)
    33   local rows = selector:exec()
    34   slot.put("{\n")
    35   for i_row, row in ipairs(rows) do
    36     slot.put("  {\n")
    37     for i_field, field in ipairs(fields) do
    38       slot.put("    ", field.name, ": ")
    39       local value
    40       if field.func then
    41         value = field.func(row)
    42       elseif field.field then
    43         value = row[field.name]
    44       end
    45         slot.put(encode.json(value))
    46       slot.put(",\n")
    47     end
    48     slot.put("  },\n")
    49   end
    50   slot.put("}\n")
    51 end
    53 function util.autoapi(args)
    54   local selector = assert(args.selector)
    55   local fields = assert(args.fields)
    56   local api_engine = assert(args.api_engine)
    58   selector:reset_fields()
    60   for i_field, field in ipairs(fields) do
    61     if field.field then
    62       selector:add_field(field.field, field.name)
    63     end
    64   end
    66   if api_engine == "xml" then
    67     util.autoapi_xml{
    68       selector = selector,
    69       fields = fields
    70     }
    71   elseif api_engine == "json" then
    72     util.autoapi_json{
    73       selector = selector,
    74       fields = fields
    75     }
    76   end
    78 end
