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;
+		}
+
+	}
+}