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);
    }

}