comparison core/src/luan/modules/TableLuan.java @ 426:23a93c118042

fix LuanTable.get() to use metatables
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 01 May 2015 18:44:20 -0600
parents 0a2fb80907f9
children dae264ad6a7b
comparison
equal deleted inserted replaced
425:0a2fb80907f9 426:23a93c118042
19 public static String concat(LuanState luan,LuanTable list,String sep,Integer i,Integer j) throws LuanException { 19 public static String concat(LuanState luan,LuanTable list,String sep,Integer i,Integer j) throws LuanException {
20 int first = i==null ? 1 : i; 20 int first = i==null ? 1 : i;
21 int last = j==null ? list.length() : j; 21 int last = j==null ? list.length() : j;
22 StringBuilder buf = new StringBuilder(); 22 StringBuilder buf = new StringBuilder();
23 for( int k=first; k<=last; k++ ) { 23 for( int k=first; k<=last; k++ ) {
24 Object val = list.get(k); 24 Object val = list.rawGet(k);
25 if( val==null ) 25 if( val==null )
26 break; 26 break;
27 if( sep!=null && k > first ) 27 if( sep!=null && k > first )
28 buf.append(sep); 28 buf.append(sep);
29 String s = Luan.asString(val); 29 String s = Luan.asString(val);
100 @LuanMethod public static Object[] unpack(LuanTable tbl,Integer iFrom,Integer iTo) { 100 @LuanMethod public static Object[] unpack(LuanTable tbl,Integer iFrom,Integer iTo) {
101 int from = iFrom!=null ? iFrom : 1; 101 int from = iFrom!=null ? iFrom : 1;
102 int to = iTo!=null ? iTo : tbl.length(); 102 int to = iTo!=null ? iTo : tbl.length();
103 List<Object> list = new ArrayList<Object>(); 103 List<Object> list = new ArrayList<Object>();
104 for( int i=from; i<=to; i++ ) { 104 for( int i=from; i<=to; i++ ) {
105 list.add( tbl.get(i) ); 105 list.add( tbl.rawGet(i) );
106 } 106 }
107 return list.toArray(); 107 return list.toArray();
108 } 108 }
109 109
110 public static LuanTable sub_list(LuanTable list,int from,int to) { 110 public static LuanTable sub_list(LuanTable list,int from,int to) {