Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.utils / src / main / java / org / gvsig / utils / console / jedit / PropsTokenMarker.java @ 40561

History | View | Annotate | Download (2.69 KB)

1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.utils.console.jedit;
25
/*
26
 * PropsTokenMarker.java - Java props/DOS INI token marker
27
 * Copyright (C) 1998, 1999 Slava Pestov
28
 *
29
 * You may use and modify this package for any purpose. Redistribution is
30
 * permitted, in both source and binary form, provided that this notice
31
 * remains intact in all source distributions of this package.
32
 */
33

    
34
import javax.swing.text.Segment;
35

    
36
/**
37
 * Java properties/DOS INI token marker.
38
 *
39
 * @author Slava Pestov
40
 * @version $Id$
41
 */
42
public class PropsTokenMarker extends TokenMarker
43
{
44
        public static final byte VALUE = Token.INTERNAL_FIRST;
45

    
46
        public byte markTokensImpl(byte token, Segment line, int lineIndex)
47
        {
48
                char[] array = line.array;
49
                int offset = line.offset;
50
                int lastOffset = offset;
51
                int length = line.count + offset;
52
loop:                for(int i = offset; i < length; i++)
53
                {
54
                        int i1 = (i+1);
55

    
56
                        switch(token)
57
                        {
58
                        case Token.NULL:
59
                                switch(array[i])
60
                                {
61
                                case '#': case ';':
62
                                        if(i == offset)
63
                                        {
64
                                                addToken(line.count,Token.COMMENT1);
65
                                                lastOffset = length;
66
                                                break loop;
67
                                        }
68
                                        break;
69
                                case '[':
70
                                        if(i == offset)
71
                                        {
72
                                                addToken(i - lastOffset,token);
73
                                                token = Token.KEYWORD2;
74
                                                lastOffset = i;
75
                                        }
76
                                        break;
77
                                case '=':
78
                                        addToken(i - lastOffset,Token.KEYWORD1);
79
                                        token = VALUE;
80
                                        lastOffset = i;
81
                                        break;
82
                                }
83
                                break;
84
                        case Token.KEYWORD2:
85
                                if(array[i] == ']')
86
                                {
87
                                        addToken(i1 - lastOffset,token);
88
                                        token = Token.NULL;
89
                                        lastOffset = i1;
90
                                }
91
                                break;
92
                        case VALUE:
93
                                break;
94
                        default:
95
                                throw new InternalError("Invalid state: "
96
                                        + token);
97
                        }
98
                }
99
                if(lastOffset != length)
100
                        addToken(length - lastOffset,Token.NULL);
101
                return Token.NULL;
102
        }
103

    
104
        public boolean supportsMultilineTokens()
105
        {
106
                return false;
107
        }
108
}