comparison src/luan/Luan.java @ 1805:7793bcb5f34a default tip

minor
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 08 May 2024 11:13:16 -0600
parents b4328322d2be
children
comparison
equal deleted inserted replaced
1804:b4328322d2be 1805:7793bcb5f34a
421 throws LuanException 421 throws LuanException
422 { 422 {
423 return load(text,sourceName,persist,null); 423 return load(text,sourceName,persist,null);
424 } 424 }
425 425
426 public static final Object nullValue = new Object();
427
426 public static Object toJava(Object obj) throws LuanException { 428 public static Object toJava(Object obj) throws LuanException {
427 return toJava(obj,null);
428 }
429
430 public static Object toJava(Object obj,Object nullValue) throws LuanException {
431 if( obj == nullValue ) 429 if( obj == nullValue )
432 return null; 430 return null;
433 if( !(obj instanceof LuanTable) ) 431 if( !(obj instanceof LuanTable) )
434 return obj; 432 return obj;
435 LuanTable tbl = (LuanTable)obj; 433 LuanTable tbl = (LuanTable)obj;
436 if( !tbl.isMap() ) { 434 if( !tbl.isMap() ) {
437 List list = new ArrayList(); 435 List list = new ArrayList();
438 for( Object el : tbl.asList() ) { 436 for( Object el : tbl.asList() ) {
439 list.add( toJava(el,nullValue) ); 437 list.add( toJava(el) );
440 } 438 }
441 return list; 439 return list;
442 } else { 440 } else {
443 Map map = new LinkedHashMap(); 441 Map map = new LinkedHashMap();
444 Iterator<Map.Entry> iter = tbl.rawIterator(); 442 Iterator<Map.Entry> iter = tbl.rawIterator();
445 while( iter.hasNext() ) { 443 while( iter.hasNext() ) {
446 Map.Entry entry = iter.next(); 444 Map.Entry entry = iter.next();
447 map.put( toJava(entry.getKey(),nullValue), toJava(entry.getValue(),nullValue) ); 445 map.put( toJava(entry.getKey()), toJava(entry.getValue()) );
448 } 446 }
449 return map; 447 return map;
450 } 448 }
451 } 449 }
452 450