1 15 package org.apache.tapestry.parse; 16 17 import org.apache.hivemind.ApplicationRuntimeException; 18 import org.apache.hivemind.Location; 19 import org.apache.hivemind.util.ToStringBuilder; 20 import org.apache.tapestry.IMarkupWriter; 21 import org.apache.tapestry.IRender; 22 import org.apache.tapestry.IRequestCycle; 23 24 32 33 public class TextToken extends TemplateToken implements IRender 34 { 35 private char[] _templateData; 36 37 private int _offset; 38 39 private int _length; 40 41 public TextToken(char[] templateData, int startIndex, int endIndex, Location location) 42 { 43 super(TokenType.TEXT, location); 44 45 if (startIndex < 0 || endIndex < 0 || startIndex > templateData.length 46 || endIndex > templateData.length) 47 throw new ApplicationRuntimeException(ParseMessages.rangeError( 48 this, 49 templateData.length), this, getLocation(), null); 50 51 _templateData = templateData; 52 53 _offset = startIndex; 54 _length = endIndex - startIndex + 1; 55 } 56 57 public void render(IMarkupWriter writer, IRequestCycle cycle) 58 { 59 if (_length == 0) 60 return; 61 62 68 writer.printRaw(_templateData, _offset, _length); 69 } 70 71 protected void extendDescription(ToStringBuilder builder) 72 { 73 builder.append("offset", _offset); 74 builder.append("length", _length); 75 } 76 77 public String getTemplateDataAsString() 78 { 79 return new String (_templateData, _offset, _length); 80 } 81 82 public int getLength() 83 { 84 return _length; 85 } 86 87 public int getOffset() 88 { 89 return _offset; 90 } 91 } | Popular Tags |