Mercurial Hosting > luan
annotate src/luan/modules/Table.luan @ 1693:45eaaf5146f3
add backup autostart
author | Vadim Filimonov <fffilimonov@yandex.ru> |
---|---|
date | Mon, 20 Jun 2022 10:29:43 +0300 |
parents | fa066aaa068c |
children | 19df8abc9805 |
rev | line source |
---|---|
1353
8d95711f6615
replace java() with require "java"
Franklin Schmidt <fschmidt@gmail.com>
parents:
1267
diff
changeset
|
1 require "java" |
321
7f7708e8fdd4
remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
320
diff
changeset
|
2 local TableLuan = require "java:luan.modules.TableLuan" |
297
899253043270
remove PackageLuan.load_lib()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
3 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
796
diff
changeset
|
4 local Table = {} |
503 | 5 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
796
diff
changeset
|
6 Table.clear = TableLuan.clear |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
796
diff
changeset
|
7 Table.concat = TableLuan.concat |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
796
diff
changeset
|
8 Table.copy = TableLuan.copy |
1095
2443152dc2f1
add Luan.hash_code() and Table.hash_value()
Franklin Schmidt <fschmidt@gmail.com>
parents:
1088
diff
changeset
|
9 Table.hash_value = TableLuan.hash_value |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
796
diff
changeset
|
10 Table.insert = TableLuan.insert |
1100
ad6b3b9fef40
add Table.is_empty() and Table.size()
Franklin Schmidt <fschmidt@gmail.com>
parents:
1095
diff
changeset
|
11 Table.is_empty = TableLuan.is_empty |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
796
diff
changeset
|
12 Table.pack = TableLuan.pack |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
796
diff
changeset
|
13 Table.remove = TableLuan.remove |
1100
ad6b3b9fef40
add Table.is_empty() and Table.size()
Franklin Schmidt <fschmidt@gmail.com>
parents:
1095
diff
changeset
|
14 Table.size = TableLuan.size |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
796
diff
changeset
|
15 Table.sort = TableLuan.sort |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
796
diff
changeset
|
16 Table.unpack = TableLuan.unpack |
497
55f9f74f1e55
Http.request is now pure luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
407
diff
changeset
|
17 |
1261
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
18 |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
19 local Luan = require "luan:Luan.luan" |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
20 local error = Luan.error |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
21 local type = Luan.type or error() |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
22 local pairs = Luan.pairs or error() |
1607 | 23 local set_metatable = Luan.set_metatable or error() |
1267 | 24 local toTable = TableLuan.toTable or error() |
1464 | 25 local copy = Table.copy or error() |
1261
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
26 |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
27 function Table.java_to_table_shallow(obj) |
1262 | 28 local rtn = toTable(obj) |
29 if rtn ~= nil then | |
30 return rtn | |
31 end | |
32 local tp = type(obj) | |
33 if tp == "java" then | |
34 tp = obj.getClass().getName() | |
35 end | |
36 error("can't convert type "..tp.." to table") | |
1261
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
37 end |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
38 |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
39 local to_luan, deepen |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
40 |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
41 function to_luan(obj,java_to_table_shallow) |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
42 return type(obj)=="java" and deepen(java_to_table_shallow(obj),java_to_table_shallow) or obj |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
43 end |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
44 |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
45 function deepen(tbl,java_to_table_shallow) |
1464 | 46 for key, value in pairs(copy(tbl)) do |
1261
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
47 key = to_luan(key,java_to_table_shallow) |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
48 value = to_luan(value,java_to_table_shallow) |
1464 | 49 tbl[key] = value |
1261
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
50 end |
1464 | 51 return tbl |
1261
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
52 end |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
53 |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
54 function Table.java_to_table_deep(obj,java_to_table_shallow) |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
55 java_to_table_shallow = java_to_table_shallow or Table.java_to_table_shallow |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
56 return deepen(java_to_table_shallow(obj),java_to_table_shallow) |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
57 end |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
58 |
198d6af7330a
rename Luan.to_table to Table.java_to_table_shallow and Luan.to_luan to Table.java_to_table_deep
Franklin Schmidt <fschmidt@gmail.com>
parents:
1260
diff
changeset
|
59 |
1607 | 60 function Table.case_insensitive(src) |
61 local String = require "luan:String.luan" | |
62 local lower = String.lower or error() | |
63 | |
64 local map = {} | |
65 local mt = {} | |
66 function mt.__new_index(tbl,key,value) | |
67 if value==nil then | |
68 map[lower(key)] = nil | |
69 else | |
70 map[lower(key)] = { s=key, v=value } | |
71 end | |
72 end | |
73 function mt.__index(tbl,key) | |
74 local val = map[lower(key)] | |
75 return val and val.v | |
76 end | |
77 function mt.__pairs(tbl) | |
78 local fn = pairs(map) | |
79 return function() | |
80 local _, val = fn() | |
81 if val == nil then | |
82 return nil | |
83 end | |
84 return val.s, val.v | |
85 end | |
86 end | |
87 | |
88 local t = {} | |
89 set_metatable(t,mt) | |
90 for k,v in pairs(src or {}) do | |
91 t[k] = v | |
92 end | |
93 return t | |
94 end | |
95 | |
96 | |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
796
diff
changeset
|
97 return Table |