Import directive node getters

This commit is contained in:
Maxim Shafirov
2011-01-10 16:10:23 +03:00
parent 47581d5e17
commit 2ed012109a
2 changed files with 39 additions and 1 deletions
+1 -1
View File
@@ -38,7 +38,7 @@ public interface JetNodeTypes {
JetNodeType PRIMARY_CONSTRUCTOR_PARAMETER = new JetNodeType("PRIMARY_CONSTRUCTOR_PARAMETER", JetParameter.class);
JetNodeType CLASS_BODY = new JetNodeType("CLASS_BODY", JetClassBody.class);
JetNodeType IMPORT_DIRECTIVE = new JetNodeType("IMPORT_DIRECTIVE", JetImportDirective.class);
JetNodeType IMPORTED = new JetNodeType("IMPORTED");
JetNodeType IMPORTED = new JetNodeType("IMPORTED"); // TODO: ???
JetNodeType NAMESPACE_BODY = new JetNodeType("NAMESPACE_BODY", JetNamespaceBody.class);
JetNodeType MODIFIER_LIST = new JetNodeType("MODIFIER_LIST", JetModifierList.class);
JetNodeType ATTRIBUTE_ANNOTATION = new JetNodeType("ATTRIBUTE_ANNOTATION", JetAttributeAnnotation.class);
@@ -1,7 +1,10 @@
package org.jetbrains.jet.lang.psi;
import com.intellij.lang.ASTNode;
import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lexer.JetTokens;
/**
* @author max
@@ -15,4 +18,39 @@ public class JetImportDirective extends JetElement {
public void accept(@NotNull JetVisitor visitor) {
visitor.visitImportDirective(this);
}
public String getImportedName() {
StringBuilder answer = new StringBuilder();
ASTNode childNode = getNode().getFirstChildNode();
while (childNode != null) {
IElementType tt = childNode.getElementType();
if (tt == JetTokens.MAP || tt == JetTokens.AS_KEYWORD) break;
if (tt == JetTokens.IDENTIFIER || tt == JetTokens.DOT) {
answer.append(childNode.getText());
}
childNode = childNode.getTreeNext();
}
return answer.toString();
}
@Nullable
public String getAliasName() {
boolean asPassed = false;
ASTNode childNode = getNode().getFirstChildNode();
while (childNode != null) {
IElementType tt = childNode.getElementType();
if (tt == JetTokens.AS_KEYWORD) asPassed = true;
if (asPassed && tt == JetTokens.IDENTIFIER) {
return childNode.getText();
}
childNode = childNode.getTreeNext();
}
return null;
}
public boolean isAllUnder() {
return getNode().findChildByType(JetTokens.MAP) != null;
}
}