diff src/luan/modules/Luan.luan @ 1259:e8020216dee7

add Luan.to_luan and fix multipart/form-data
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 23 Sep 2018 17:58:40 -0600
parents 73d754b1889f
children 4b5b84853f6f
line wrap: on
line diff
--- a/src/luan/modules/Luan.luan	Thu Sep 20 22:11:11 2018 -0600
+++ b/src/luan/modules/Luan.luan	Sun Sep 23 17:58:40 2018 -0600
@@ -1,5 +1,6 @@
 java()
 local BasicLuan = require "java:luan.modules.BasicLuan"
+local LuanJava = require "java:luan.Luan"
 
 local Luan = {}
 
@@ -37,4 +38,33 @@
 	return Luan.load( "return "..s, source_name or "eval" )()
 end
 
+
+local error = Luan.error
+local type = Luan.type or error()
+local pairs = Luan.pairs or error()
+
+-- tries to convert to luan
+function Luan.java_to_luan(obj)
+	return LuanJava.toTable(obj) or obj
+end
+
+function Luan.to_luan(obj,java_to_luan)
+	if type(obj) ~= "java" then
+		return obj
+	end
+	java_to_luan = java_to_luan or Luan.java_to_luan
+	obj = java_to_luan(obj)
+	type(obj) ~= "java" or error("can't convert type "..obj.getClass().getName().." to luan")
+	if type(obj) ~= "table" then
+		return obj
+	end
+	local tbl = {}
+	for key, value in pairs(obj) do
+		key = Luan.to_luan(key,java_to_luan)
+		value = Luan.to_luan(value,java_to_luan)
+		tbl[key] = value
+	end
+	return tbl
+end
+
 return Luan