1
16
17 import org.as2lib.regexp.AsciiUtil;
18 import org.as2lib.regexp.node.Node;
19 import org.as2lib.regexp.node.Range;
20 import org.as2lib.regexp.node.NotRangeA;
21
22
28
29 class org.as2lib.regexp.node.RangeA extends Range {
30
31 public function RangeA(n:Number) {
32 lower = n >>> 16;
33 upper = n & 0xFFFF;
34 }
35
36 public function dup(flag:Boolean):Node {
37 return (flag) ?
38 new NotRangeA((lower << 16) + upper) :
39 new RangeA((lower << 16) + upper);
40 }
41
42 public function match(matcher:Object, i:Number, seq:String):Boolean {
43 if (i < matcher.to) {
44 var ch:Number = seq.charCodeAt(i);
45 var m:Boolean = (((ch-lower)|(upper-ch)) >= 0);
46 if (!m) {
47 ch = AsciiUtil.toUpper(ch);
48 m = (((ch-lower)|(upper-ch)) >= 0);
49 if (!m) {
50 ch = AsciiUtil.toLower(ch);
51 m = (((ch-lower)|(upper-ch)) >= 0);
52 }
53 }
54 return (m && next.match(matcher, i+1, seq));
55 }
56 return false;
57 }
58 }
59
60