Mercurial Hosting > luan
comparison src/luan/modules/Table.luan @ 1607:fa066aaa068c
nginx caching
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 30 Apr 2021 20:23:28 -0600 |
parents | 465b4a0dae4a |
children | 19df8abc9805 |
comparison
equal
deleted
inserted
replaced
1606:7c7f28c724e8 | 1607:fa066aaa068c |
---|---|
18 | 18 |
19 local Luan = require "luan:Luan.luan" | 19 local Luan = require "luan:Luan.luan" |
20 local error = Luan.error | 20 local error = Luan.error |
21 local type = Luan.type or error() | 21 local type = Luan.type or error() |
22 local pairs = Luan.pairs or error() | 22 local pairs = Luan.pairs or error() |
23 local set_metatable = Luan.set_metatable or error() | |
23 local toTable = TableLuan.toTable or error() | 24 local toTable = TableLuan.toTable or error() |
24 local copy = Table.copy or error() | 25 local copy = Table.copy or error() |
25 | 26 |
26 function Table.java_to_table_shallow(obj) | 27 function Table.java_to_table_shallow(obj) |
27 local rtn = toTable(obj) | 28 local rtn = toTable(obj) |
54 java_to_table_shallow = java_to_table_shallow or Table.java_to_table_shallow | 55 java_to_table_shallow = java_to_table_shallow or Table.java_to_table_shallow |
55 return deepen(java_to_table_shallow(obj),java_to_table_shallow) | 56 return deepen(java_to_table_shallow(obj),java_to_table_shallow) |
56 end | 57 end |
57 | 58 |
58 | 59 |
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 | |
59 return Table | 97 return Table |