package com.yiistorm.completition.contributors;
import com.intellij.codeInsight.completion.CompletionContributor;
import com.intellij.codeInsight.completion.CompletionType;
import com.intellij.patterns.PlatformPatterns;
import com.intellij.patterns.PsiElementPattern;
import com.intellij.patterns.StandardPatterns;
import com.jetbrains.php.lang.PhpLanguage;
import com.jetbrains.php.lang.parser.PhpElementTypes;
import com.jetbrains.php.lang.patterns.PhpPatterns;
import com.yiistorm.completition.providers.YiiAppCompletionProvider;
/**
* Created by mazx on 07.01.14.
*/
public class YiiAppCompletionContributor extends CompletionContributor {
public YiiAppCompletionContributor() {
extend(CompletionType.BASIC, appFieldPattern(), new YiiAppCompletionProvider());
}
public static PsiElementPattern.Capture appFieldPattern() {
return PlatformPatterns.psiElement()
.withParent(PlatformPatterns.psiElement().withElementType(PhpElementTypes.FIELD_REFERENCE)
.withChild(
PlatformPatterns.psiElement().withElementType(PhpElementTypes.METHOD_REFERENCE)
.referencing(
PhpPatterns.psiElement().withElementType(PhpElementTypes.CLASS_METHOD)
.withName("app").withParent(
PhpPatterns.psiElement()
.withElementType(PhpElementTypes.CLASS)
.withName(StandardPatterns.string().oneOf("Yii", "YiiBase"))
)
)
)
).withLanguage(PhpLanguage.INSTANCE);
}
}