package org.jetbrains.plugins.cucumber.psi;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.cucumber.CucumberElementFactory;
import org.jetbrains.plugins.cucumber.psi.i18n.JsonGherkinKeywordProvider;
/**
* @author Roman.Chernyatchik
* @date Sep 5, 2009
*/
public class GherkinElementFactory {
private static final Logger LOG = Logger.getInstance(GherkinElementFactory.class.getName());
private GherkinElementFactory() {
}
public static GherkinFeature createFeatureFromText(final Project project, @NotNull final String text) {
final PsiElement[] list = getTopLevelElements(project, text);
for (PsiElement psiElement : list) {
if (psiElement instanceof GherkinFeature) {
return (GherkinFeature)psiElement;
}
}
LOG.error("Failed to create Feature from text:\n" + text);
return null;
}
public static GherkinStepsHolder createScenarioFromText(final Project project, final String language, @NotNull final String text) {
final GherkinKeywordProvider provider = JsonGherkinKeywordProvider.getKeywordProvider();
final GherkinKeywordTable keywordsTable = provider.getKeywordsTable(language);
String featureText = "# language: " + language + "\n" + keywordsTable.getFeatureSectionKeyword() + ": Dummy\n" + text;
GherkinFeature feature = createFeatureFromText(project, featureText);
return feature.getScenarios() [0];
}
public static PsiElement[] getTopLevelElements(final Project project, @NotNull final String text) {
return CucumberElementFactory.createTempPsiFile(project, text).getChildren();
}
}