package org.jetbrains.plugins.cucumber.psi.impl; import com.intellij.lang.ASTNode; import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.cucumber.psi.GherkinStep; import org.jetbrains.plugins.cucumber.psi.GherkinStepsHolder; import org.jetbrains.plugins.cucumber.psi.GherkinTag; import org.jetbrains.plugins.cucumber.psi.GherkinTokenTypes; public abstract class GherkinStepsHolderBase extends GherkinPsiElementBase implements GherkinStepsHolder { protected GherkinStepsHolderBase(@NotNull ASTNode node) { super(node); } @Override public final String getScenarioName() { final StringBuilder result = new StringBuilder(); ASTNode node = getNode().getFirstChildNode(); while (node != null && node.getElementType() != GherkinTokenTypes.COLON) { node = node.getTreeNext(); } if (node != null) { node = node.getTreeNext(); } while (node != null && !node.getText().contains("\n")) { result.append(node.getText()); node = node.getTreeNext(); } return result.toString().trim(); } @NotNull @Override public final GherkinStep[] getSteps() { final GherkinStep[] steps = PsiTreeUtil.getChildrenOfType(this, GherkinStep.class); return steps == null ? GherkinStep.EMPTY_ARRAY : steps; } @Override public final GherkinTag[] getTags() { final GherkinTag[] tags = PsiTreeUtil.getChildrenOfType(this, GherkinTag.class); return tags == null ? GherkinTag.EMPTY_ARRAY : tags; } }