package ee.edio.garmin.util;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiFileFactory;
import com.intellij.psi.impl.PsiFileFactoryImpl;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.testFramework.LightVirtualFile;
import ee.edio.garmin.MonkeyFileType;
import ee.edio.garmin.MonkeyLanguage;
import ee.edio.garmin.psi.MonkeyComponent;
import ee.edio.garmin.psi.MonkeyComponentName;
import ee.edio.garmin.psi.MonkeyId;
import org.jetbrains.annotations.Nullable;
public class MonkeyElementGenerator {
@Nullable
public static MonkeyId createIdentifierFromText(Project myProject, String name) {
final PsiFile dummyFile = createDummyFile(myProject, "function " + name + "(){}");
final MonkeyComponent monkeyComponent = PsiTreeUtil.getChildOfType(dummyFile, MonkeyComponent.class);
//final MonkeyComponent monkeyComponent = PsiTreeUtil.getChildOfType(dummyFile, MonkeyComponent.class);
final MonkeyComponentName componentName = monkeyComponent == null ? null : monkeyComponent.getComponentName();
return componentName == null ? null : componentName.getId();
}
public static PsiFile createDummyFile(Project myProject, String text) {
final PsiFileFactory factory = PsiFileFactory.getInstance(myProject);
final String name = "dummy." + MonkeyFileType.INSTANCE.getDefaultExtension();
final LightVirtualFile virtualFile = new LightVirtualFile(name, MonkeyFileType.INSTANCE, text);
final PsiFile psiFile = ((PsiFileFactoryImpl) factory).trySetupPsiForFile(virtualFile, MonkeyLanguage.INSTANCE, false, true);
assert psiFile != null;
return psiFile;
}
}