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");
}
}