annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
321
7f7708e8fdd4 remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 320
diff changeset
1 java()
7f7708e8fdd4 remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 320
diff changeset
2 local BasicLuan = require "java:luan.modules.BasicLuan"
1259
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
3 local LuanJava = require "java:luan.Luan"
297
899253043270 remove PackageLuan.load_lib()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
4
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
5 local Luan = {}
298
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
6
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
7 Luan.get_metatable = BasicLuan.get_metatable
1095
2443152dc2f1 add Luan.hash_code() and Table.hash_value()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
8 Luan.hash_code = BasicLuan.hash_code
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
9 Luan.ipairs = BasicLuan.ipairs
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
10 Luan.load = BasicLuan.load
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
11 Luan.load_file = BasicLuan.load_file
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
12 Luan.new_error = BasicLuan.new_error
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
13 Luan.pairs = BasicLuan.pairs
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
14 Luan.pcall = BasicLuan.pcall
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
15 Luan.range = BasicLuan.range
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
16 Luan.raw_equal = BasicLuan.raw_equal
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
17 Luan.raw_get = BasicLuan.raw_get
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
18 Luan.raw_len = BasicLuan.raw_len
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
19 Luan.raw_set = BasicLuan.raw_set
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
20 Luan.set_metatable = BasicLuan.set_metatable
1189
73d754b1889f add stringify
Franklin Schmidt <fschmidt@gmail.com>
parents: 1164
diff changeset
21 Luan.stringify = BasicLuan.stringify
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
22 Luan.to_string = BasicLuan.to_string
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
23 Luan.try = BasicLuan.try_
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
24 Luan.type = BasicLuan.type
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
25 Luan.values = BasicLuan.values
503
92c3d22745b8 make _ENV optional
Franklin Schmidt <fschmidt@gmail.com>
parents: 482
diff changeset
26
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
27 function Luan.do_file(uri)
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
28 return Luan.load_file(uri)()
473
bab5607a0eed move do_file implementation to luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 448
diff changeset
29 end
bab5607a0eed move do_file implementation to luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 448
diff changeset
30
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
31 Luan.VERSION = Luan.do_file "classpath:luan/version.luan"
442
75ccb4da803f move assert() implementation to luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 441
diff changeset
32
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
33 function Luan.error(message)
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
34 Luan.new_error(message).throw()
481
5d4a78c93383 luan errors are now tables
Franklin Schmidt <fschmidt@gmail.com>
parents: 473
diff changeset
35 end
5d4a78c93383 luan errors are now tables
Franklin Schmidt <fschmidt@gmail.com>
parents: 473
diff changeset
36
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
37 function Luan.eval(s,source_name)
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
38 return Luan.load( "return "..s, source_name or "eval" )()
694
b620b8e1010f remove Luan.load() allow_expression param and add Luan.eval()
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
39 end
b620b8e1010f remove Luan.load() allow_expression param and add Luan.eval()
Franklin Schmidt <fschmidt@gmail.com>
parents: 693
diff changeset
40
1259
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
41
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
42 local error = Luan.error
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
43 local type = Luan.type or error()
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
44 local pairs = Luan.pairs or error()
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
45
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
46 -- tries to convert to luan
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
47 function Luan.java_to_luan(obj)
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
48 return LuanJava.toTable(obj) or obj
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
49 end
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
50
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
51 function Luan.to_luan(obj,java_to_luan)
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
52 if type(obj) ~= "java" then
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
53 return obj
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
54 end
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
55 java_to_luan = java_to_luan or Luan.java_to_luan
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
56 obj = java_to_luan(obj)
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
57 type(obj) ~= "java" or error("can't convert type "..obj.getClass().getName().." to luan")
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
58 if type(obj) ~= "table" then
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
59 return obj
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
60 end
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
61 local tbl = {}
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
62 for key, value in pairs(obj) do
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
63 key = Luan.to_luan(key,java_to_luan)
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
64 value = Luan.to_luan(value,java_to_luan)
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
65 tbl[key] = value
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
66 end
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
67 return tbl
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
68 end
e8020216dee7 add Luan.to_luan and fix multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents: 1189
diff changeset
69
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
70 return Luan