1  /*
     2   * Copyright the original author or authors.
     3   * 
     4   * Licensed under the MOZILLA PUBLIC LICENSE, Version 1.1 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   * 
     8   *      http://www.mozilla.org/MPL/MPL-1.1.html
     9   * 
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    16  
    17  import org.as2lib.regexp.node.Node;
    18  import org.as2lib.regexp.node.TreeInfo;
    19   
    20  /**
    21   * {@code Slice} is a node class for a sequence of literal characters.
    22   * 
    23   * @author Igor Sadovskiy
    24   */
    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