comparison 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
comparison
equal deleted inserted replaced
39:e5bcb1eeafc1 40:e3624b7cd603
1 package luan;
2
3
4 public final class LuaSource {
5 public final String name;
6 public final String text;
7
8 public LuaSource(String name,String text) {
9 this.name = name;
10 this.text = text;
11 }
12
13 public static final class Element extends LuaElement {
14 public final LuaSource source;
15 public final int start;
16 public final int end;
17
18 public Element(LuaSource source,int start,int end) {
19 if( source==null )
20 throw new NullPointerException("source is null");
21 this.source = source;
22 this.start = start;
23 this.end = end;
24 }
25
26 public String text() {
27 return source.text.substring(start,end);
28 }
29
30 @Override public String toString(String fnName) {
31 return source.name + ':' + lineNumber() + ": in " + function(fnName);
32 }
33
34 private int lineNumber() {
35 int line = 0;
36 int i = -1;
37 do {
38 line++;
39 i = source.text.indexOf('\n',i+1);
40 } while( i != -1 && i < start );
41 return line;
42 }
43
44 }
45 }