Mercurial Hosting > luan
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 }; |