Ver Fonte

Add JSON test code for Lua pages

bel2125 há 5 anos atrás
pai
commit
e6691e2d01
1 ficheiros alterados com 77 adições e 15 exclusões
  1. 77 15
      test/page2.lua

+ 77 - 15
test/page2.lua

@@ -10,19 +10,23 @@ The following features are available:
 <ul>
 ]])
 
-demo_data = {}
+demo_data_for_xml = {}
+demo_data_for_json = {}
 
 function print_if_available(tab, name)
   if tab then
     mg.write("<li>" .. name .. " available</li>\n")
 	if type(tab)=="table" then
-	  demo_data[name] = {}
-	  demo_data[name][0] = name
+	  demo_data_for_xml[name] = {}
+	  demo_data_for_xml[name][0] = name
+	  demo_data_for_json[name] = {}
 	  for nname,nval in pairs(tab) do
-	    demo_data[name][nname] = type(nval)
+	    demo_data_for_xml[name][nname] = type(nval)
+		demo_data_for_json[name][nname] = type(nval)
 	  end
 	else
-  	  demo_data[name] = type(tab)
+  	  demo_data_for_xml[name] = type(tab)
+	  demo_data_for_json[name] = type(tab)
 	end
   else
     mg.write("<li>" .. name .. " not available</li>\n")
@@ -95,15 +99,16 @@ if package and (type(package.loaded)=="table") then
   end
 end
 
--- Print preloaded packages known to Lua
-if xml then
-  mg.write("<li>xml</li>\n")
-  recurse(xml)
-end
+-- Load path
+mg.write("<li>Package search path: " .. package.path .. "</li>\n");
 
--- Current date/time
+-- End of list
 mg.write("</ul></p>\n");
-mg.write("<p> Today is " .. os.date("%A") .. "</p>\n");
+
+
+-- Current date/time
+mg.write("\n<hr/>\n")
+mg.write("<p>Today is " .. os.date("%A") .. "</p>\n");
 
 -- Request content
 mg.write("\n<hr/>\n")
@@ -113,7 +118,7 @@ if l then
   mg.write(mg.read())
   mg.write("\n</pre>\n</p>\n")
 else
-  mg.write("<p>not request content available</p>\n")
+  mg.write("<p>no request content available for " .. mg.request_info.request_method .. " method</p>\n")
 end
 
 -- Directory listing
@@ -155,7 +160,7 @@ function printTable(tab, indent)
       mg.write(string.rep("  ", indent) .. tostring(k) .. ":\n")
 	  printTable(v, indent + 1)
 	else
-      mg.write(string.rep("  ", indent) .. tostring(k) .. "\t" .. v .. "\n")
+      mg.write(string.rep("  ", indent) .. tostring(k) .. "\t" .. tostring(v) .. "\n")
 	end
   end
 end
@@ -178,10 +183,67 @@ mg.write(htmlEsc(xml.str(xmlev, 1, "xml")))
 mg.write("</pre>\n</p>\n")
 
 mg.write("<p>lua2xml:<br>\n<pre>\n");
-mg.write(htmlEsc(xml.str(demo_data, 1, "xml")))
+mg.write(htmlEsc(xml.str(demo_data_for_xml, 1, "xml")))
 mg.write("</pre>\n</p>\n")
 end
 
+
+-- json test
+current_script_path = mg.script_name:match("(.*[%/%\\]).*%.lua")
+script_search_path = current_script_path .. "?.lua"
+package.path = script_search_path .. ";" .. package.path
+json = require "json"
+mg.write("\n<hr/>\n")
+mg.write("<p>json2lua:<br>\n<pre>\n");
+-- JSON example from https://en.wikipedia.org/wiki/JSON#Example
+jsonstr = [[{
+  "firstName": "John",
+  "lastName": "Smith",
+  "isAlive": true,
+  "age": 27,
+  "address": {
+    "streetAddress": "21 2nd Street",
+    "city": "New York",
+    "state": "NY",
+    "postalCode": "10021-3100"
+  },
+  "phoneNumbers": [
+    {
+      "type": "home",
+      "number": "212 555-1234"
+    },
+    {
+      "type": "office",
+      "number": "646 555-4567"
+    },
+    {
+      "type": "mobile",
+      "number": "123 456-7890"
+    }
+  ],
+  "children": [],
+  "spouse": null
+}]]
+jsonev = json.decode(jsonstr)
+mg.write(htmlEsc(jsonstr))
+mg.write("\n-->\n")
+mg.write(type(jsonev) .. ":\n")
+mg.write(printTable(jsonev, 1)) 
+mg.write("</pre>\n</p>\n")
+
+mg.write("<p>lua2json:<br>\n<pre>\n");
+mg.write(htmlEsc(json.encode(jsonev)))
+mg.write("</pre>\n</p>\n")
+
+mg.write("<p>lua2json:<br>\n<pre>\n");
+mg.write(htmlEsc(json.encode(demo_data_for_json)))
+mg.write("</pre>\n</p>\n")
+
+
+-- Next section ...
+mg.write("\n<hr/>\n")
+
+
 mg.write([[
 </body></html>
 ]])