1
16
17 import org.as2lib.regexp.node.Node;
18 import org.as2lib.regexp.node.TreeInfo;
19
20
25
26 class org.as2lib.regexp.node.Slice extends Node {
27
28 private var buffer:Array;
29
30 public function Slice(buf:Array) {
31 buffer = buf;
32 }
33
34 public function match(matcher:Object, i:Number, seq:String):Boolean {
35 var buf:Array = buffer;
36 var len:Number = buf.length;
37 if (i + len > matcher.to) return false;
38
39 for (var j = 0; j < len; j++) {
40 if (buf[j] != seq.charCodeAt(i+j)) return false;
41 }
42
43 return next.match(matcher, i+len, seq);
44 }
45
46 public function study(info:TreeInfo):Boolean {
47 info.minLength += buffer.length;
48 info.maxLength += buffer.length;
49 return next.study(info);
50 }
51
52 public function getBuffer(Void):Array {
53 return buffer;
54 }
55 }
56
57