use of com.intellij.psi.PsiElement in project buck by facebook.
the class BuckBuildUtil method getPropertyValue.
/**
* Get the value of a property in a specific buck rule body.
* TODO(#7908675): We should use Buck's own classes for it.
*/
public static String getPropertyValue(BuckRuleBody body, String name) {
if (body == null) {
return null;
}
PsiElement[] children = body.getChildren();
for (PsiElement child : children) {
if (BuckPsiUtils.testType(child, BuckTypes.PROPERTY)) {
PsiElement lvalue = child.getFirstChild();
PsiElement propertyName = lvalue.getFirstChild();
if (propertyName != null && propertyName.getText().equals(name)) {
BuckExpression expression = (BuckExpression) BuckPsiUtils.findChildWithType(child, BuckTypes.EXPRESSION);
return expression != null ? BuckPsiUtils.getStringValueFromExpression(expression) : null;
}
}
}
return null;
}
use of com.intellij.psi.PsiElement in project buck by facebook.
the class BuckBuildUtil method extractBuckTarget.
/**
* Get the buck target from a buck file.
* TODO(#7908675): We should use Buck's own classes for it.
*/
public static String extractBuckTarget(Project project, VirtualFile file) {
BuckFile buckFile = (BuckFile) PsiManager.getInstance(project).findFile(file);
if (buckFile == null) {
return null;
}
PsiElement[] children = buckFile.getChildren();
for (PsiElement child : children) {
if (child.getNode().getElementType() == BuckTypes.RULE_BLOCK) {
PsiElement ruleName = child.getFirstChild();
// Find rule "project_config"
if (ruleName != null && BuckPsiUtils.testType(ruleName, BuckTypes.RULE_NAME) && ruleName.getText().equals(PROJECT_CONFIG_RULE_NAME)) {
// Find property "src_target"
PsiElement bodyElement = BuckPsiUtils.findChildWithType(child, BuckTypes.RULE_BODY);
return getPropertyValue((BuckRuleBody) bodyElement, SRC_TARGET_PROPERTY_NAME);
}
}
}
return null;
}
use of com.intellij.psi.PsiElement in project buck by facebook.
the class BuckFormattingModelBuilder method getRangeAffectingIndent.
@Nullable
@Override
public TextRange getRangeAffectingIndent(PsiFile file, int offset, ASTNode elementAtOffset) {
final PsiElement element = elementAtOffset.getPsi();
final PsiElement container = element.getParent();
return container != null ? container.getTextRange() : null;
}
use of com.intellij.psi.PsiElement in project buck by facebook.
the class DependenciesOptimizer method optimzeDeps.
public static void optimzeDeps(@NotNull PsiFile file) {
final PropertyVisitor visitor = new PropertyVisitor();
file.accept(new BuckVisitor() {
@Override
public void visitElement(PsiElement node) {
node.acceptChildren(this);
node.accept(visitor);
}
});
// Commit modifications.
final PsiDocumentManager manager = PsiDocumentManager.getInstance(file.getProject());
manager.doPostponedOperationsAndUnblockDocument(manager.getDocument(file));
}
use of com.intellij.psi.PsiElement in project intellij-community by JetBrains.
the class GroovyEditorTextProvider method getEditorText.
@Override
public TextWithImports getEditorText(PsiElement elementAtCaret) {
String result = "";
PsiElement element = findExpressionInner(elementAtCaret, true);
if (element != null) {
if (element instanceof GrReferenceExpression) {
final GrReferenceExpression reference = (GrReferenceExpression) element;
if (reference.getQualifier() == null) {
final PsiElement resolved = reference.resolve();
if (resolved instanceof PsiEnumConstant) {
final PsiEnumConstant enumConstant = (PsiEnumConstant) resolved;
final PsiClass enumClass = enumConstant.getContainingClass();
if (enumClass != null) {
result = enumClass.getName() + "." + enumConstant.getName();
}
}
}
}
if (result.isEmpty()) {
result = element.getText();
}
}
return new TextWithImportsImpl(CodeFragmentKind.EXPRESSION, result);
}
Aggregations