Mercurial Hosting > luan
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