diff src/luan/LuanSource.java @ 48:64ecb7a3aad7

rename Lua to Luan git-svn-id: https://luan-java.googlecode.com/svn/trunk@49 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Fri, 28 Dec 2012 03:29:12 +0000
parents src/luan/LuaSource.java@c53dc854e6cc
children 28dfd91a816c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/luan/LuanSource.java	Fri Dec 28 03:29:12 2012 +0000
@@ -0,0 +1,45 @@
+package luan;
+
+
+public final class LuanSource {
+	public final String name;
+	public final String text;
+
+	public LuanSource(String name,String text) {
+		this.name = name;
+		this.text = text;
+	}
+
+	public static final class Element extends LuanElement {
+		public final LuanSource source;
+		public final int start;
+		public final int end;
+
+		public Element(LuanSource 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 String location() {
+			return source.name + ':' + lineNumber();
+		}
+
+		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;
+		}
+
+	}
+}