-
Notifications
You must be signed in to change notification settings - Fork 0
/
flat_rope.dart
65 lines (54 loc) · 1.45 KB
/
flat_rope.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
class FlatRope extends AbstractRope {
final String _sequence;
// constructor
FlatRope(this._sequence){
this._length = this._sequence.length;
}
String charAt(final int index) {
return this._sequence[index];
}
int charCodeAt(int index) {
return this._sequence.charCodeAt(index);
}
int depth() {
return 0;
}
// TODO: iterator
// public Iterator<Character> iterator(final int start) {
// if (start < 0 || start >= length())
// throw new IndexOutOfBoundsException("Rope index out of range: " + start);
// return new Iterator<Character>() {
// int current = start;
// @Override
// public boolean hasNext() {
// return this.current < FlatRope.this.length();
// }
//
// @Override
// public Character next() {
// return FlatRope.this.sequence.charAt(this.current++);
// }
//
// @Override
// public void remove() {
// throw new UnsupportedOperationException("Rope iterator is read-only.");
// }
// };
// }
MutableString subSequence(final int start, final int end) {
if (end - start < 8) {
return new FlatRope(this._sequence.substring(start, end));
} else {
return new SubstringRope(this, start, end-start);
}
}
String toString() {
return this._sequence.toString();
}
MutableString rebalance() {
return this;
}
// TODO: write
// TODO: matcher
}
// vim:foldmethod=marker sw=2 sts=2 ts=2 tw=0 et ai nowrap