Mercurial Hosting > luan
diff src/luan/LuaSource.java @ 40:e3624b7cd603
implement stack trace
git-svn-id: https://luan-java.googlecode.com/svn/trunk@41 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Fri, 21 Dec 2012 10:45:54 +0000 |
parents | |
children | c53dc854e6cc |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/luan/LuaSource.java Fri Dec 21 10:45:54 2012 +0000 @@ -0,0 +1,45 @@ +package luan; + + +public final class LuaSource { + public final String name; + public final String text; + + public LuaSource(String name,String text) { + this.name = name; + this.text = text; + } + + public static final class Element extends LuaElement { + public final LuaSource source; + public final int start; + public final int end; + + public Element(LuaSource source,int start,int end) { + if( source==null ) + throw new NullPointerException("source is null"); + this.source = source; + this.start = start; + this.end = end; + } + + public String text() { + return source.text.substring(start,end); + } + + @Override public String toString(String fnName) { + return source.name + ':' + lineNumber() + ": in " + function(fnName); + } + + private int lineNumber() { + int line = 0; + int i = -1; + do { + line++; + i = source.text.indexOf('\n',i+1); + } while( i != -1 && i < start ); + return line; + } + + } +}