package sk.stuba.fiit.perconik.core.java.dom; import javax.annotation.Nonnull; import com.google.common.base.Function; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.StringLiteral; public final class StringLiterals { private StringLiterals() {} private enum ToEscapedValue implements Function<StringLiteral, String> { INSTANCE; public String apply(@Nonnull final StringLiteral literal) { return literal.getEscapedValue(); } } private enum ToLiteralValue implements Function<StringLiteral, String> { INSTANCE; public String apply(@Nonnull final StringLiteral literal) { return literal.getLiteralValue(); } } private static <N extends ASTNode, T> Function<N, T> cast(final Function<?, T> transformer) { // only for stateless internal singletons shared across all types @SuppressWarnings("unchecked") Function<N, T> result = (Function<N, T>) transformer; return result; } public static <N extends StringLiteral> Function<N, String> toEscapedValue() { return cast(ToEscapedValue.INSTANCE); } public static <N extends StringLiteral> Function<N, String> toLiteralValue() { return cast(ToLiteralValue.INSTANCE); } }