1
16
17 import org.as2lib.regexp.AsciiUtil;
18 import org.as2lib.regexp.node.Node;
19 import org.as2lib.regexp.node.SingleU;
20 import org.as2lib.regexp.node.TreeInfo;
21
22
28
29 class org.as2lib.regexp.node.NotSingleU extends Node {
30
31 private var ch:Number;
32
33 public function NotSingleU(c:Number) {
34 ch = AsciiUtil.toLower(AsciiUtil.toUpper(c));
35 }
36
37 public function dup(flag:Boolean):Node {
38 return (flag) ? new SingleU(ch) : new NotSingleU(ch);
39 }
40
41 public function match(matcher:Object, i:Number, seq:String):Boolean {
42 if (i < matcher.to) {
43 var c:Number = seq.charCodeAt(i);
44 if (c == ch) return false;
45 c = AsciiUtil.toUpper(c);
46 c = AsciiUtil.toLower(c);
47 if (c != ch) return next.match(matcher, i+1, seq);
48 }
49 return false;
50 }
51
52 public function study(info:TreeInfo):Boolean {
53 info.minLength++;
54 info.maxLength++;
55 return next.study(info);
56 }
57 }
58
59