1 package org.jedit.syntax; 2 3 11 12 import javax.swing.text.Segment ; 13 14 20 public class PropsTokenMarker extends TokenMarker 21 { 22 public static final byte VALUE = Token.INTERNAL_FIRST; 23 24 public byte markTokensImpl(byte token, Segment line, int lineIndex) 25 { 26 char[] array = line.array; 27 int offset = line.offset; 28 int lastOffset = offset; 29 int length = line.count + offset; 30 loop: for(int i = offset; i < length; i++) 31 { 32 int i1 = (i+1); 33 34 switch(token) 35 { 36 case Token.NULL: 37 switch(array[i]) 38 { 39 case '#': case ';': 40 if(i == offset) 41 { 42 addToken(line.count,Token.COMMENT1); 43 lastOffset = length; 44 break loop; 45 } 46 break; 47 case '[': 48 if(i == offset) 49 { 50 addToken(i - lastOffset,token); 51 token = Token.KEYWORD2; 52 lastOffset = i; 53 } 54 break; 55 case '=': 56 addToken(i - lastOffset,Token.KEYWORD1); 57 token = VALUE; 58 lastOffset = i; 59 break; 60 } 61 break; 62 case Token.KEYWORD2: 63 if(array[i] == ']') 64 { 65 addToken(i1 - lastOffset,token); 66 token = Token.NULL; 67 lastOffset = i1; 68 } 69 break; 70 case VALUE: 71 break; 72 default: 73 throw new InternalError ("Invalid state: " 74 + token); 75 } 76 } 77 if(lastOffset != length) 78 addToken(length - lastOffset,Token.NULL); 79 return Token.NULL; 80 } 81 82 public boolean supportsMultilineTokens() 83 { 84 return false; 85 } 86 } 87 | Popular Tags |