package ee.edio.garmin.psi.impl;
import com.intellij.lang.ASTNode;
import com.intellij.psi.PsiNamedElement;
import com.intellij.psi.impl.source.tree.LeafElement;
import ee.edio.garmin.MonkeyStringLiteralEscaper;
import ee.edio.garmin.psi.MonkeyStringLiteral;
import ee.edio.garmin.psi.MonkeyTypes;
import org.jetbrains.annotations.NotNull;
public class MonkeyPsiImplUtil {
public static String getName(PsiNamedElement element) {
return getKey(element);
}
public static String getKey(PsiNamedElement element) {
ASTNode keyNode = element.getNode().findChildByType(MonkeyTypes.IDENTIFIER);
if (keyNode != null) {
return keyNode.getText();
} else {
return "";
}
}
// to satisfy PsiLanguageInjectionHost
@SuppressWarnings("UnusedParameters")
public static boolean isValidHost(@NotNull MonkeyStringLiteral o) {
return true;
}
// to satisfy PsiLanguageInjectionHost
@NotNull
public static MonkeyStringLiteral updateText(@NotNull MonkeyStringLiteral o, @NotNull String text) {
if (text.length() > 2) {
StringBuilder outChars = new StringBuilder();
MonkeyStringLiteralEscaper.escapeString(text.substring(1, text.length() - 1), outChars);
outChars.insert(0, '"');
outChars.append('"');
text = outChars.toString();
}
ASTNode valueNode = o.getNode().getFirstChildNode();
assert valueNode instanceof LeafElement;
((LeafElement) valueNode).replaceWithText(text);
return o;
}
// to satisfy PsiLanguageInjectionHost
@NotNull
public static MonkeyStringLiteralEscaper createLiteralTextEscaper(@NotNull MonkeyStringLiteral o) {
return new MonkeyStringLiteralEscaper<>(o);
}
}