Package ideah.psi.impl

Source Code of ideah.psi.impl.HPIdentImpl

package ideah.psi.impl;

import com.intellij.lang.ASTNode;
import com.intellij.psi.tree.IElementType;
import ideah.lexer.HaskellTokenType;
import ideah.parser.HaskellElementTypes;
import ideah.psi.api.HPIdent;
import org.jetbrains.annotations.NotNull;

public final class HPIdentImpl extends HaskellAbstractIdentImpl implements HPIdent {

    public HPIdentImpl(@NotNull ASTNode node) {
        super(node);
    }

    @Override
    protected ASTNode getNodeToBeReplaced() {
        return isPrefixInfixIdent() ? getParent().getNode() : getNode();
    }

    @Override
    protected ASTNode getNodeToBeInsertedTo() {
        ASTNode parent = getParent().getNode();
        return isPrefixInfixIdent() ? parent.getTreeParent() : parent;
    }

    @Override
    protected boolean isPrefixInfixIdent() {
        ASTNode parentNode = getParent().getNode();
        ASTNode grandParentNode = parentNode.getTreeParent();
        HaskellTokenType infixPrefixIdentType = HaskellElementTypes.INFIX_PREFIX_IDENT;
        IElementType parentType = grandParentNode.getElementType() == infixPrefixIdentType ? infixPrefixIdentType : parentNode.getElementType();
        return parentType == infixPrefixIdentType;
    }
}
TOP

Related Classes of ideah.psi.impl.HPIdentImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.