package org.simantics.scl.compiler.elaboration.expressions.annotations; import org.simantics.scl.compiler.constants.StringConstant; import org.simantics.scl.compiler.elaboration.expressions.ELiteral; import org.simantics.scl.compiler.elaboration.expressions.EStringLiteral; import org.simantics.scl.compiler.elaboration.expressions.EVar; import org.simantics.scl.compiler.elaboration.expressions.Expression; public class AnnotationUtils { public static String extractString(Expression expression) { if(expression instanceof EVar) return ((EVar)expression).name; else if(expression instanceof EStringLiteral) { EStringLiteral literal = (EStringLiteral)expression; if(literal.strings.length == 1) return literal.strings[0]; } else if(expression instanceof ELiteral) { ELiteral literal = (ELiteral)expression; if(literal.getValue() instanceof StringConstant) { StringConstant constant = (StringConstant)literal.getValue(); return constant.getValue(); } } return null; } }