package jetbrains.mps.scope; /*Generated by MPS */ import org.jetbrains.annotations.NotNull; import org.jetbrains.mps.openapi.model.SNode; import org.jetbrains.annotations.Nullable; import jetbrains.mps.internal.collections.runtime.Sequence; import jetbrains.mps.internal.collections.runtime.IWhereFilter; public class FilteringScope extends DelegatingScope { public FilteringScope(@NotNull Scope scope) { super(scope); } public boolean isExcluded(SNode node) { return false; } @Override public SNode resolve(SNode contextNode, String refText) { SNode resolved = super.resolve(contextNode, refText); return (isExcluded(resolved) ? null : resolved); } @Override public Iterable<SNode> getAvailableElements(@Nullable String prefix) { Iterable<SNode> availableElements = super.getAvailableElements(prefix); return Sequence.fromIterable(availableElements).where(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return !(isExcluded(it)); } }); } @Override public String getReferenceText(SNode contextNode, SNode node) { if (isExcluded(node)) { return null; } return super.getReferenceText(contextNode, node); } @Override public boolean contains(SNode node) { if (isExcluded(node)) { return false; } return super.contains(node); } }