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