package jetbrains.mps.lang.smodel.scripts; /*Generated by MPS */ import jetbrains.mps.lang.script.runtime.BaseMigrationScript; import jetbrains.mps.lang.script.runtime.AbstractMigrationRefactoring; import org.jetbrains.mps.openapi.language.SAbstractConcept; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import org.jetbrains.mps.openapi.model.SNode; import org.jetbrains.mps.openapi.language.SProperty; import jetbrains.mps.internal.collections.runtime.Sequence; import org.jetbrains.mps.openapi.model.SNodeAccessUtil; import jetbrains.mps.util.NameUtil; import org.jetbrains.annotations.Nullable; import org.jetbrains.mps.openapi.model.SNodeReference; import org.jetbrains.mps.openapi.persistence.PersistenceFacade; public final class EscapeSpecialCharactersInProperties_MigrationScript extends BaseMigrationScript { public EscapeSpecialCharactersInProperties_MigrationScript() { super("Escape special characters in property values"); this.addRefactoring(new AbstractMigrationRefactoring() { @Override public String getName() { return "Escape special characters in property values"; } @Override public String getAdditionalInfo() { return "Escape special characters in property values"; } @Override public SAbstractConcept getApplicableConcept() { return MetaAdapterFactory.getConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x10802efe25aL, "jetbrains.mps.lang.core.structure.BaseConcept"); } @Override public boolean isApplicableInstanceNode(SNode node) { for (SProperty property : Sequence.fromIterable(node.getProperties())) { String value = SNodeAccessUtil.getProperty(node, property); if (value != null && !(value.equals(NameUtil.escapeInvisibleCharacters(value)))) { return true; } } return false; } @Override public void doUpdateInstanceNode(SNode node) { for (SProperty property : Sequence.fromIterable(node.getProperties())) { String value = SNodeAccessUtil.getProperty(node, property); if (value == null) { continue; } String escapedValue = NameUtil.escapeInvisibleCharacters(value); if (!(value.equals(escapedValue))) { SNodeAccessUtil.setProperty(node, property, escapedValue); } } } @Override public boolean isShowAsIntention() { return true; } }); } @Nullable @Override public SNodeReference getScriptNode() { return PersistenceFacade.getInstance().createNodeReference("r:00000000-0000-4000-0000-011c89590300(jetbrains.mps.lang.smodel.scripts)/5426775851424578122"); } }