comparison core/src/luan/impl/ThemeParser.java @ 635:c83b8cefd922

better error handling in theme code
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 01 Mar 2016 07:01:58 -0700
parents 3dde072c3420
children 859c0dedc8b6
comparison
equal deleted inserted replaced
634:3dde072c3420 635:c83b8cefd922
2 2
3 import java.util.Map; 3 import java.util.Map;
4 import java.util.HashMap; 4 import java.util.HashMap;
5 import java.util.List; 5 import java.util.List;
6 import java.util.ArrayList; 6 import java.util.ArrayList;
7 import luan.Luan;
7 import luan.LuanSource; 8 import luan.LuanSource;
8 import luan.LuanTable; 9 import luan.LuanTable;
9 import luan.LuanElement; 10 import luan.LuanElement;
10 import luan.LuanState; 11 import luan.LuanState;
11 import luan.LuanFunction; 12 import luan.LuanFunction;
209 { 210 {
210 addSymbol(INDENT); 211 addSymbol(INDENT);
211 final Expr env = env(); 212 final Expr env = env();
212 Expr exp = new ExprImpl(se(start,"indent")) { 213 Expr exp = new ExprImpl(se(start,"indent")) {
213 @Override public Object eval(LuanStateImpl luan) throws LuanException { 214 @Override public Object eval(LuanStateImpl luan) throws LuanException {
214 LuanTable tbl = (LuanTable)env.eval(luan); 215 Object obj = env.eval(luan);
216 if( !(obj instanceof LuanTable) )
217 throw new LuanException(luan,"bad argument (table expected, got "+Luan.type(obj)+")");
218 LuanTable tbl = (LuanTable)obj;
215 String indent = (String)tbl.get(luan,INDENT); 219 String indent = (String)tbl.get(luan,INDENT);
216 if( indent==null ) throw new NullPointerException(); 220 if( indent==null ) throw new NullPointerException();
217 return indent; 221 return indent;
218 } 222 }
219 }; 223 };