use of org.eclipse.jface.text.rules.IToken in project translationstudio8 by heartsome.
the class InnerTagRule method evaluate.
@SuppressWarnings("unchecked")
@Override
public IToken evaluate(ICharacterScanner scanner) {
int c = scanner.read();
if (c != ICharacterScanner.EOF && fDetector.isWordStart((char) c)) {
if (fColumn == UNDEFINED || (fColumn == scanner.getColumn() - 1)) {
fBuffer.setLength(0);
do {
fBuffer.append((char) c);
c = scanner.read();
} while (fDetector.isWordPart((char) c) && c != ICharacterScanner.EOF);
scanner.unread();
String buffer = fBuffer.toString();
IToken token = null;
Set<String> set = fWords.keySet();
for (String re : set) {
if (re != null && buffer.matches(re)) {
token = (IToken) fWords.get(re);
break;
}
}
if (token != null) {
// 匹配并得到样式
return token;
}
if (fDefaultToken.isUndefined()) {
unreadBuffer(scanner);
}
return fDefaultToken;
}
} else {
}
scanner.unread();
return Token.UNDEFINED;
}
use of org.eclipse.jface.text.rules.IToken in project translationstudio8 by heartsome.
the class PresentationRepairer method createPresentation.
public void createPresentation(TextPresentation presentation, ITypedRegion region) {
if (fScanner == null) {
// will be removed if deprecated constructor will be removed
addRange(presentation, region.getOffset(), region.getLength(), fDefaultTextStyle);
return;
}
int lastStart = region.getOffset();
int length = 0;
boolean firstToken = true;
IToken lastToken = Token.UNDEFINED;
TextStyle lastTextStyle = getTokenTextStyle(lastToken);
fScanner.setRange(fDocument, lastStart, region.getLength());
while (true) {
IToken token = fScanner.nextToken();
if (token.isEOF())
break;
TextStyle textStyle = getTokenTextStyle(token);
if (lastTextStyle != null && lastTextStyle.equals(textStyle)) {
length += fScanner.getTokenLength();
firstToken = false;
} else {
if (!firstToken)
addRange(presentation, lastStart, length, lastTextStyle);
firstToken = false;
lastToken = token;
lastTextStyle = textStyle;
lastStart = fScanner.getTokenOffset();
length = fScanner.getTokenLength();
}
}
addRange(presentation, lastStart, length, lastTextStyle);
}
use of org.eclipse.jface.text.rules.IToken in project translationstudio8 by heartsome.
the class TagStyleConfigurator method configure.
public static void configure(TextLayout textLayout) {
String text = textLayout.getText();
Document doc = new Document(text);
ITokenScanner scanner = getRecipeScanner(doc);
scanner.setRange(doc, 0, doc.getLength());
IToken token;
while ((token = scanner.nextToken()) != Token.EOF) {
int offset = scanner.getTokenOffset();
int length = scanner.getTokenLength();
Object data = token.getData();
if (data != null && data instanceof TextStyle) {
TextStyle textStyle = (TextStyle) data;
textLayout.setStyle(textStyle, offset, offset + length - 1);
}
}
}
use of org.eclipse.jface.text.rules.IToken in project translationstudio8 by heartsome.
the class PresentationRepairer method createPresentation.
public void createPresentation(TextPresentation presentation, ITypedRegion region) {
if (fScanner == null) {
// will be removed if deprecated constructor will be removed
addRange(presentation, region.getOffset(), region.getLength(), fDefaultTextStyle);
return;
}
int lastStart = region.getOffset();
int length = 0;
boolean firstToken = true;
IToken lastToken = Token.UNDEFINED;
TextStyle lastTextStyle = getTokenTextStyle(lastToken);
fScanner.setRange(fDocument, lastStart, region.getLength());
while (true) {
IToken token = fScanner.nextToken();
if (token.isEOF())
break;
TextStyle textStyle = getTokenTextStyle(token);
if (lastTextStyle != null && lastTextStyle.equals(textStyle)) {
length += fScanner.getTokenLength();
firstToken = false;
} else {
if (!firstToken)
addRange(presentation, lastStart, length, lastTextStyle);
firstToken = false;
lastToken = token;
lastTextStyle = textStyle;
lastStart = fScanner.getTokenOffset();
length = fScanner.getTokenLength();
}
}
addRange(presentation, lastStart, length, lastTextStyle);
}
use of org.eclipse.jface.text.rules.IToken in project translationstudio8 by heartsome.
the class InnerTagRule method evaluate.
@SuppressWarnings("unchecked")
@Override
public IToken evaluate(ICharacterScanner scanner) {
int c = scanner.read();
if (c != ICharacterScanner.EOF && fDetector.isWordStart((char) c)) {
if (fColumn == UNDEFINED || (fColumn == scanner.getColumn() - 1)) {
fBuffer.setLength(0);
do {
fBuffer.append((char) c);
c = scanner.read();
} while (fDetector.isWordPart((char) c) && c != ICharacterScanner.EOF);
scanner.unread();
String buffer = fBuffer.toString();
IToken token = null;
Set<String> set = fWords.keySet();
for (String re : set) {
if (re != null && buffer.matches(re)) {
token = (IToken) fWords.get(re);
break;
}
}
if (token != null) {
// 匹配并得到样式
if (ruleType == TYPE_TAG_START_INDEX || ruleType == TYPE_TAG_Content) {
start = true;
return token;
} else if (ruleType == TYPE_TAG_END_INDEX && start) {
start = false;
return token;
}
}
if (fDefaultToken.isUndefined()) {
unreadBuffer(scanner);
}
return fDefaultToken;
}
} else {
// 仍然没有匹配的时候,将 start 状态恢复为 false。
if (ruleType == TYPE_TAG_Content) {
start = false;
}
}
scanner.unread();
return Token.UNDEFINED;
}
Aggregations