Search in sources :

Example 1 with IToken

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;
}
Also used : IToken(org.eclipse.jface.text.rules.IToken) TreeSet(java.util.TreeSet) ArrayList(java.util.ArrayList) TableNode(org.talend.sqlbuilder.dbstructure.nodes.TableNode)

Example 2 with IToken

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;
}
Also used : IToken(org.eclipse.jface.text.rules.IToken)

Example 3 with IToken

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());
}
Also used : SQLRuleManager(org.jkiss.dbeaver.ui.editors.sql.syntax.SQLRuleManager) ITextSelection(org.eclipse.jface.text.ITextSelection) IToken(org.eclipse.jface.text.rules.IToken) SQLDialect(org.jkiss.dbeaver.model.sql.SQLDialect) SQLCommentToken(org.jkiss.dbeaver.ui.editors.sql.syntax.tokens.SQLCommentToken) IDocument(org.eclipse.jface.text.IDocument) BadLocationException(org.eclipse.jface.text.BadLocationException)

Example 4 with IToken

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;
}
Also used : IToken(org.eclipse.jface.text.rules.IToken) TextStyle(org.eclipse.swt.graphics.TextStyle) Document(org.eclipse.jface.text.Document) IDocument(org.eclipse.jface.text.IDocument) ITokenScanner(org.eclipse.jface.text.rules.ITokenScanner)

Example 5 with IToken

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;
}
Also used : IToken(org.eclipse.jface.text.rules.IToken)

Aggregations

IToken (org.eclipse.jface.text.rules.IToken)75 Token (org.eclipse.jface.text.rules.Token)25 Test (org.junit.Test)21 IDocument (org.eclipse.jface.text.IDocument)17 Document (org.eclipse.jface.text.Document)15 TextAttribute (org.eclipse.jface.text.TextAttribute)15 MultiLineRule (org.eclipse.jface.text.rules.MultiLineRule)13 BadLocationException (org.eclipse.jface.text.BadLocationException)11 IPartitionTokenScanner (org.eclipse.jface.text.rules.IPartitionTokenScanner)10 IPredicateRule (org.eclipse.jface.text.rules.IPredicateRule)10 IRule (org.eclipse.jface.text.rules.IRule)10 RuleBasedPartitionScanner (org.eclipse.jface.text.rules.RuleBasedPartitionScanner)10 ArrayList (java.util.ArrayList)9 WordRule (org.eclipse.jface.text.rules.WordRule)8 SingleLineRule (org.eclipse.jface.text.rules.SingleLineRule)6 RuleBasedScanner (org.eclipse.jface.text.rules.RuleBasedScanner)5 Color (org.eclipse.swt.graphics.Color)5 BadPositionCategoryException (org.eclipse.jface.text.BadPositionCategoryException)4 TypedPosition (org.eclipse.jface.text.TypedPosition)4 EndOfLineRule (org.eclipse.jface.text.rules.EndOfLineRule)4