package com.yiistorm.references.referenceContributors;
import com.intellij.patterns.PlatformPatterns;
import com.intellij.patterns.PsiElementPattern;
import com.intellij.patterns.StandardPatterns;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiReferenceContributor;
import com.intellij.psi.PsiReferenceRegistrar;
import com.jetbrains.php.lang.PhpLanguage;
import com.jetbrains.php.lang.parser.PhpElementTypes;
import com.yiistorm.helpers.YiiContibutorHelper;
import com.yiistorm.references.ReferenceProviders.I18nReferenceProvider;
public class I18nReferenceContributor extends PsiReferenceContributor {
@Override
public void registerReferenceProviders(PsiReferenceRegistrar registrar) {
registrar.registerReferenceProvider(categoryPattern(), new I18nReferenceProvider());
}
public PsiElementPattern.Capture categoryPattern() {
return PlatformPatterns.psiElement(PsiElement.class)
.withElementType(PhpElementTypes.STRING)
.withParent(YiiContibutorHelper.methodParamsList("t", StandardPatterns.string().oneOf("Yii", "YiiBase")))
.insideStarting(
PlatformPatterns.psiElement().withElementType(PhpElementTypes.PARAMETER_LIST)
)
.withLanguage(PhpLanguage.INSTANCE);
}
}