use of org.eclipse.jface.text.rules.IToken in project tdi-studio-se by Talend.
the class UnsignedWordRule method evaluate.
//$NON-NLS-1$
@SuppressWarnings("unchecked")
public IToken evaluate(ICharacterScanner scanner) {
int c = scanner.read();
if (fDetector.isWordStart((char) c)) {
if (fColumn == UNDEFINED || (fColumn == scanner.getColumn() - 1)) {
fBuffer.setLength(0);
do {
fBuffer.append((char) c);
c = scanner.read();
} while (c != ICharacterScanner.EOF && fDetector.isWordPart((char) c));
scanner.unread();
String tokenName = fBuffer.substring(0, fBuffer.length()).toLowerCase();
IToken token = (IToken) fWords.get(tokenName);
if (token != null) {
if ((token == fTableToken) && (dictionary != null)) {
ArrayList list = (ArrayList) dictionary.getByTableName(tokenName);
if (list != null) {
for (int j = 0; j < list.size(); j++) {
TableNode nd = (TableNode) list.get(j);
ArrayList ls = null;
try {
ls = (ArrayList) nd.getColumnNames();
} catch (Throwable e) {
//$NON-NLS-1$
SqlBuilderPlugin.log(Messages.getString("UnsignedWordRule.logMessage"), e);
}
if (ls != null) {
TreeSet colTree = (TreeSet) dictionary.getColumnListByTableName(tokenName);
if (colTree == null && j == 0) {
colTree = new TreeSet();
dictionary.putColumnsByTableName(tokenName, colTree);
for (int i = 0; i < ls.size(); i++) {
String lo = ((String) ls.get(i));
addWord(lo, fColumnToken);
colTree.add(lo);
}
}
}
}
}
}
return token;
}
if (fDefaultToken.isUndefined()) {
unreadBuffer(scanner);
}
return fDefaultToken;
}
}
scanner.unread();
return Token.UNDEFINED;
}
use of org.eclipse.jface.text.rules.IToken in project cubrid-manager by CUBRID.
the class SQLKeyWordRule method evaluate.
/**
* @see org.eclipse.jface.text.rules.IRule#evaluate(org.eclipse.jface.text.rules.ICharacterScanner)
* @param scanner the character scanner to be used by this rule
* @return the token computed by the rule
*/
public IToken evaluate(ICharacterScanner scanner) {
int c = scanner.read();
if (c != ICharacterScanner.EOF && wordDetector.isWordStart((char) c) && isPreCharSeparator(scanner)) {
strBuffer.setLength(0);
char startChar = (char) c;
do {
strBuffer.append((char) c);
c = scanner.read();
} while (c != ICharacterScanner.EOF && wordDetector.isWordPart(startChar, (char) c));
if (c != ICharacterScanner.EOF && c != ' ' && c != '\r' && c != '\n' && c != '\t' && c != '(' && c != ')' && c != ',' && c != ';') {
strBuffer.append((char) c);
}
scanner.unread();
String word = strBuffer.substring(0, strBuffer.length()).toLowerCase();
IToken token = (IToken) wordMap.get(word);
if (token != null) {
return token;
}
if (fDefaultToken.isUndefined()) {
unreadBuffer(scanner);
}
return fDefaultToken;
}
scanner.unread();
return Token.UNDEFINED;
}
use of org.eclipse.jface.text.rules.IToken in project dbeaver by serge-rider.
the class CopyUnformattedTextAction method run.
@Override
public void run() {
if (sqlEditor == null) {
return;
}
ITextSelection selection = (ITextSelection) sqlEditor.getSelectionProvider().getSelection();
IDocument document = sqlEditor.getDocumentProvider().getDocument(sqlEditor.getEditorInput());
if (document == null) {
return;
}
int startPos, endPos;
if (selection.getLength() > 1) {
startPos = selection.getOffset();
endPos = startPos + selection.getLength();
} else {
startPos = 0;
endPos = document.getLength();
}
StringBuilder result = new StringBuilder();
SQLRuleManager ruleManager = sqlEditor.getRuleManager();
SQLDialect dialect = sqlEditor.getSyntaxManager().getDialect();
ruleManager.setRange(document, startPos, endPos - startPos);
String[] singleLineComments = dialect.getSingleLineComments();
Pair<String, String> multiLineComments = dialect.getMultiLineComments();
boolean lastWhitespace = false;
try {
for (; ; ) {
IToken token = ruleManager.nextToken();
if (token.isEOF()) {
break;
}
int tokenOffset = ruleManager.getTokenOffset();
final int tokenLength = ruleManager.getTokenLength();
if (token.isWhitespace()) {
if (!lastWhitespace) {
result.append(' ');
}
lastWhitespace = true;
} else if (token instanceof SQLCommentToken) {
String comment = document.get(tokenOffset, tokenLength);
for (String slc : singleLineComments) {
if (comment.startsWith(slc)) {
if (multiLineComments != null) {
comment = multiLineComments.getFirst() + comment.substring(slc.length()) + multiLineComments.getSecond();
}
break;
}
}
comment = TextUtils.compactWhiteSpaces(comment);
result.append(comment);
} else {
lastWhitespace = false;
result.append(document.get(tokenOffset, tokenLength));
}
}
} catch (BadLocationException e) {
// dump
e.printStackTrace();
}
UIUtils.setClipboardContents(Display.getCurrent(), TextTransfer.getInstance(), result.toString().trim());
}
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);
}
}
scanner = null;
doc = null;
}
use of org.eclipse.jface.text.rules.IToken in project hale by halestudio.
the class CombinedWordRule method evaluate.
/*
* @see IRule#evaluate(ICharacterScanner)
*/
@Override
public IToken evaluate(ICharacterScanner scanner) {
int c = scanner.read();
if (fDetector.isWordStart((char) c)) {
if (fColumn == UNDEFINED || (fColumn == scanner.getColumn() - 1)) {
fBuffer.clear();
do {
fBuffer.append((char) c);
c = scanner.read();
} while (c != ICharacterScanner.EOF && fDetector.isWordPart((char) c));
scanner.unread();
for (int i = 0, n = fMatchers.size(); i < n; i++) {
IToken token = fMatchers.get(i).evaluate(scanner, fBuffer);
if (!token.isUndefined())
return token;
}
if (fDefaultToken.isUndefined())
unreadBuffer(scanner);
return fDefaultToken;
}
}
scanner.unread();
return Token.UNDEFINED;
}
Aggregations