package jetbrains.mps.scope; /*Generated by MPS */ import java.util.Set; 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; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.internal.collections.runtime.SetSequence; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations; public class FilteringByNameScope extends Scope { private final Set<String> filteredNames; private final Scope scope; public FilteringByNameScope(Set<String> filteredNames, @NotNull Scope scope) { this.filteredNames = filteredNames; this.scope = scope; } @Override public Iterable<SNode> getAvailableElements(@Nullable String prefix) { return Sequence.fromIterable(scope.getAvailableElements(prefix)).where(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return !(SNodeOperations.isInstanceOf(it, MetaAdapterFactory.getInterfaceConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, "jetbrains.mps.lang.core.structure.INamedConcept"))) || !(SetSequence.fromSet(filteredNames).contains(SPropertyOperations.getString(SNodeOperations.cast(it, MetaAdapterFactory.getInterfaceConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, "jetbrains.mps.lang.core.structure.INamedConcept")), MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name")))); } }); } @Nullable @Override public SNode resolve(SNode contextNode, @NotNull String refText) { return (!(SetSequence.fromSet(filteredNames).contains(refText)) ? scope.resolve(contextNode, refText) : null); } @Nullable @Override public String getReferenceText(SNode contextNode, @NotNull SNode node) { return scope.getReferenceText(contextNode, node); } @Override public boolean contains(SNode node) { if (SNodeOperations.isInstanceOf(node, MetaAdapterFactory.getInterfaceConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, "jetbrains.mps.lang.core.structure.INamedConcept"))) { String name = SPropertyOperations.getString(SNodeOperations.cast(node, MetaAdapterFactory.getInterfaceConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, "jetbrains.mps.lang.core.structure.INamedConcept")), MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name")); return !(SetSequence.fromSet(filteredNames).contains(name)) && scope.contains(node); } else { return scope.contains(node); } } }