Gridarta Editor
CrossfireDialogTokenMarker.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2015 The Gridarta Developers.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 package net.sf.gridarta.textedit.textarea.tokenmarker;
21 
22 import javax.swing.text.Segment;
24 
30 
31  @Override
32  public byte markTokensImpl(final byte token, final Segment line) {
33  final char[] array = line.array;
34  final int offset = line.offset;
35  final int length = line.count;
36  if (length >= 7 && array[offset] == '@' && array[offset + 1] == 'm' && array[offset + 2] == 'a' && array[offset + 3] == 't' && array[offset + 4] == 'c' && array[offset + 5] == 'h' && array[offset + 6] == ' ') {
38  int start = offset + 6;
39  byte id = Token.NULL;
40  for (int i = start + 1; i < offset + length; i++) {
41  final byte thisId;
42  if (array[i] == '|') {
43  thisId = Token.OPERATOR;
44  } else if (Character.isUpperCase(array[i])) {
45  thisId = Token.INVALID;
46  } else {
47  thisId = Token.LITERAL1;
48  }
49  if (thisId != id) {
50  addToken(i - start, id);
51  start = i;
52  id = thisId;
53  }
54  }
55  addToken(offset + length - start, id);
56  } else {
57  addToken(length, Token.NULL);
58  }
59 
60  return Token.NULL;
61  }
62 
63 }
int length
The number of lines in the model being tokenized.
void addToken(final int length, final byte id)
Adds a token to the token list.
static final byte LITERAL1
Literal 1 token id.
Definition: Token.java:42
A TokenMarker for the message field of Crossfire objects allowing.
Base package of all Gridarta classes.
A linked list of tokens.
Definition: Token.java:21
static final byte OPERATOR
Operator token id.
Definition: Token.java:78
This package contains the other part of the script editor.
static final byte NULL
Normal text token id.
Definition: Token.java:26
A token marker that splits lines of text into tokens.
static final byte KEYWORD1
Keyword 1 token id.
Definition: Token.java:60
static final byte INVALID
Invalid token id.
Definition: Token.java:84