1 30 31 package org.syntax.jedit.tokenmarker; 32 33 import javax.swing.text.Segment ; 34 35 41 public class PropsTokenMarker extends TokenMarker 42 { 43 public static final byte VALUE = Token.INTERNAL_FIRST; 44 45 public byte markTokensImpl(byte token, Segment line, int lineIndex) 46 { 47 char[] array = line.array; 48 int offset = line.offset; 49 int lastOffset = offset; 50 int length = line.count + offset; 51 loop: for(int i = offset; i < length; i++) 52 { 53 int i1 = (i+1); 54 55 switch(token) 56 { 57 case Token.NULL: 58 switch(array[i]) 59 { 60 case '#': case ';': 61 if(i == offset) 62 { 63 addToken(line.count,Token.COMMENT1); 64 lastOffset = length; 65 break loop; 66 } 67 break; 68 case '[': 69 if(i == offset) 70 { 71 addToken(i - lastOffset,token); 72 token = Token.KEYWORD2; 73 lastOffset = i; 74 } 75 break; 76 case '=': 77 addToken(i - lastOffset,Token.KEYWORD1); 78 token = VALUE; 79 lastOffset = i; 80 break; 81 } 82 break; 83 case Token.KEYWORD2: 84 if(array[i] == ']') 85 { 86 addToken(i1 - lastOffset,token); 87 token = Token.NULL; 88 lastOffset = i1; 89 } 90 break; 91 case VALUE: 92 break; 93 default: 94 throw new InternalError ("Invalid state: " 95 + token); 96 } 97 } 98 if(lastOffset != length) 99 addToken(length - lastOffset,Token.NULL); 100 return Token.NULL; 101 } 102 103 public boolean supportsMultilineTokens() 104 { 105 return false; 106 } 107 } 108 | Popular Tags |