Mercurial Hosting > luan
annotate core/src/luan/AbstractLuanTable.java @ 356:5e34702423a0
better parser error message
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 14 Apr 2015 09:44:07 -0600 |
parents | 1bce334a816b |
children | 1a464e090538 |
rev | line source |
---|---|
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
1 package luan; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
2 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
3 import java.util.Iterator; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
4 import java.util.ListIterator; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
5 import java.util.Map; |
284
8870840251ea
use LinkedHashMap in LuanTable to preserve order
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
274
diff
changeset
|
6 import java.util.LinkedHashMap; |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
7 import java.util.List; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
8 import java.util.ArrayList; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
9 import java.util.Collections; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
10 import java.util.Comparator; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
11 import java.util.Set; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
12 import java.util.HashSet; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
13 import java.util.IdentityHashMap; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
14 import java.util.regex.Pattern; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
15 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
16 |
355
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
17 public abstract class AbstractLuanTable implements LuanTable, LuanRepr { |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
18 |
284
8870840251ea
use LinkedHashMap in LuanTable to preserve order
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
274
diff
changeset
|
19 protected final Map<Object,Object> newMap() { |
8870840251ea
use LinkedHashMap in LuanTable to preserve order
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
274
diff
changeset
|
20 return new LinkedHashMap<Object,Object>(); |
8870840251ea
use LinkedHashMap in LuanTable to preserve order
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
274
diff
changeset
|
21 } |
8870840251ea
use LinkedHashMap in LuanTable to preserve order
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
274
diff
changeset
|
22 |
8870840251ea
use LinkedHashMap in LuanTable to preserve order
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
274
diff
changeset
|
23 protected final Map<Object,Object> newMap(Map<Object,Object> map) { |
8870840251ea
use LinkedHashMap in LuanTable to preserve order
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
274
diff
changeset
|
24 return new LinkedHashMap<Object,Object>(map); |
8870840251ea
use LinkedHashMap in LuanTable to preserve order
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
274
diff
changeset
|
25 } |
8870840251ea
use LinkedHashMap in LuanTable to preserve order
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
274
diff
changeset
|
26 |
233
ef39bc4d3f70
basic lucene works
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
27 @Override public boolean isEmpty() { |
ef39bc4d3f70
basic lucene works
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
28 return isList() && length()==0; |
ef39bc4d3f70
basic lucene works
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
29 } |
ef39bc4d3f70
basic lucene works
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
30 |
ef39bc4d3f70
basic lucene works
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
31 @Override public boolean isList() { |
ef39bc4d3f70
basic lucene works
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
32 return asList().size() == asMap().size(); |
ef39bc4d3f70
basic lucene works
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
33 } |
ef39bc4d3f70
basic lucene works
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
34 |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
35 @Override public List<Object> asList() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
36 return Collections.emptyList(); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
37 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
38 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
39 @Override public Map<Object,Object> asMap() { |
284
8870840251ea
use LinkedHashMap in LuanTable to preserve order
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
274
diff
changeset
|
40 Map<Object,Object> map = newMap(); |
234
b25feac318d8
add lucene jar and minor changes
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
233
diff
changeset
|
41 for( Map.Entry<Object,Object> entry : this ) { |
b25feac318d8
add lucene jar and minor changes
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
233
diff
changeset
|
42 map.put(entry.getKey(),entry.getValue()); |
b25feac318d8
add lucene jar and minor changes
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
233
diff
changeset
|
43 } |
b25feac318d8
add lucene jar and minor changes
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
233
diff
changeset
|
44 return map; |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
45 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
46 |
355
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
47 // shouldn't include list |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
48 protected Map<Object,Object> map() { |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
49 return asMap(); |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
50 } |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
51 |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
52 protected abstract String type(); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
53 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
54 @Override public final String toString() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
55 return type() + ": " + Integer.toHexString(hashCode()); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
56 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
57 |
224
05eb2837ddbf
change LuanTable.put() to not return old value
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
58 @Override public void put(Object key,Object val) { |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
59 throw new UnsupportedOperationException("can't put into a "+type()); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
60 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
61 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
62 @Override public void insert(int pos,Object value) { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
63 throw new UnsupportedOperationException("can't insert into a "+type()); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
64 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
65 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
66 @Override public void add(Object value) { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
67 throw new UnsupportedOperationException("can't add to a "+type()); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
68 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
69 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
70 @Override public Object remove(int pos) { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
71 throw new UnsupportedOperationException("can't remove from a "+type()); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
72 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
73 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
74 @Override public void sort(Comparator<Object> cmp) { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
75 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
76 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
77 @Override public int length() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
78 return 0; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
79 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
80 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
81 @Override public LuanTable subList(int from,int to) { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
82 throw new UnsupportedOperationException("can't get a sub-list of a "+type()); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
83 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
84 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
85 @Override public LuanTable getMetatable() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
86 return null; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
87 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
88 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
89 @Override public void setMetatable(LuanTable metatable) { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
90 throw new UnsupportedOperationException("can't set a metatable on a "+type()); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
91 } |
274
8afe9f2fdfec
AB testing, not fully tested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
234
diff
changeset
|
92 |
8afe9f2fdfec
AB testing, not fully tested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
234
diff
changeset
|
93 @Override public LuanTable cloneTable() { |
284
8870840251ea
use LinkedHashMap in LuanTable to preserve order
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
274
diff
changeset
|
94 return isList() ? new LuanTableImpl(new ArrayList<Object>(asList())) : new LuanTableImpl(newMap(asMap())); |
274
8afe9f2fdfec
AB testing, not fully tested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
234
diff
changeset
|
95 } |
300
9fb523472035
add java() to control java access
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
284
diff
changeset
|
96 |
9fb523472035
add java() to control java access
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
284
diff
changeset
|
97 @Override public boolean hasJava() { |
9fb523472035
add java() to control java access
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
284
diff
changeset
|
98 throw new UnsupportedOperationException(); |
9fb523472035
add java() to control java access
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
284
diff
changeset
|
99 } |
9fb523472035
add java() to control java access
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
284
diff
changeset
|
100 |
9fb523472035
add java() to control java access
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
284
diff
changeset
|
101 @Override public void setJava() { |
9fb523472035
add java() to control java access
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
284
diff
changeset
|
102 throw new UnsupportedOperationException(); |
9fb523472035
add java() to control java access
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
284
diff
changeset
|
103 } |
355
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
104 |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
105 @Override public String repr() { |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
106 return repr( Collections.newSetFromMap(new IdentityHashMap<AbstractLuanTable,Boolean>()) ); |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
107 } |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
108 |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
109 private String repr(Set<AbstractLuanTable> set) { |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
110 if( !set.add(this) ) { |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
111 return "\"<circular reference>\""; |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
112 } |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
113 StringBuilder sb = new StringBuilder(); |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
114 sb.append('{'); |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
115 boolean isFirst = true; |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
116 for( Object obj : asList() ) { |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
117 if( isFirst ) { |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
118 isFirst = false; |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
119 } else { |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
120 sb.append(", "); |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
121 } |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
122 sb.append(repr(set,obj)); |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
123 } |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
124 for( Map.Entry<Object,Object> entry : map().entrySet() ) { |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
125 if( isFirst ) { |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
126 isFirst = false; |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
127 } else { |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
128 sb.append(", "); |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
129 } |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
130 sb.append(reprKey(set,entry.getKey())).append('=').append(repr(set,entry.getValue())); |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
131 } |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
132 sb.append('}'); |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
133 return sb.toString(); |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
134 } |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
135 |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
136 private static final Pattern namePtn = Pattern.compile("[a-zA-Z_][a-zA-Z_0-9]*"); |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
137 |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
138 private String reprKey(Set<AbstractLuanTable> set,Object obj) { |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
139 if( obj instanceof String ) { |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
140 String s = (String)obj; |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
141 if( namePtn.matcher(s).matches() ) |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
142 return s; |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
143 } |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
144 return "[" + repr(set,obj) + "]"; |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
145 } |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
146 |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
147 String repr(Set<AbstractLuanTable> set,Object obj) { |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
148 if( obj instanceof AbstractLuanTable ) { |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
149 AbstractLuanTable t = (AbstractLuanTable)obj; |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
150 return t.repr(set); |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
151 } else { |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
152 String s = Luan.repr(obj); |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
153 if( s == null ) |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
154 s = "<couldn't repr: " + Luan.stringEncode(Luan.toString(obj)) + ">"; |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
155 return s; |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
156 } |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
157 } |
1bce334a816b
AbstractLuanTable now implements LuanRepr
Franklin Schmidt <fschmidt@gmail.com>
parents:
300
diff
changeset
|
158 |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
159 } |