View Javadoc

1   /*
2    * PropsTokenMarker.java - Java props/DOS INI token marker
3    * Copyright (C) 1998, 1999 Slava Pestov
4    *
5    * You may use and modify this package for any purpose. Redistribution is
6    * permitted, in both source and binary form, provided that this notice
7    * remains intact in all source distributions of this package.
8    */
9   
10  package org.syntax.jedit.tokenmarker;
11  
12  import javax.swing.text.Segment;
13  
14  /***
15   * Java properties/DOS INI token marker.
16   * 
17   * @author Slava Pestov
18   * @version $Id: PropsTokenMarker.java,v 1.9 1999/12/13 03:40:30 sp Exp $
19   */
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 '#' :
40  				case ';' :
41  					if( i == offset )
42  					{
43  						addToken( line.count, Token.COMMENT1 );
44  						lastOffset = length;
45  						break loop;
46  					}
47  					break;
48  				case '[' :
49  					if( i == offset )
50  					{
51  						addToken( i - lastOffset, token );
52  						token = Token.KEYWORD2;
53  						lastOffset = i;
54  					}
55  					break;
56  				case '=' :
57  					addToken( i - lastOffset, Token.KEYWORD1 );
58  					token = VALUE;
59  					lastOffset = i;
60  					break;
61  				}
62  				break;
63  			case Token.KEYWORD2 :
64  				if( array[i] == ']' )
65  				{
66  					addToken( i1 - lastOffset, token );
67  					token = Token.NULL;
68  					lastOffset = i1;
69  				}
70  				break;
71  			case VALUE :
72  				break;
73  			default :
74  				throw new InternalError( "Invalid state: " + 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  }