r1666 - branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types
Author: tchemit Date: 2009-12-02 13:12:19 +0100 (Wed, 02 Dec 2009) New Revision: 1666 Modified: branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeManager.java Log: move convert method to type manager (better than JAXXCompiler place, but still not perfect) Modified: branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeManager.java =================================================================== --- branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeManager.java 2009-12-02 11:18:58 UTC (rev 1665) +++ branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeManager.java 2009-12-02 12:12:19 UTC (rev 1666) @@ -26,8 +26,14 @@ public class TypeManager { + /** + * Dictionnary of converters loaded by the {@link java.util.ServiceLoader} mecanism + */ private static Map<Class<?>, TypeConverter> converters; + /** + * @return dictionnary of known converters + */ public static Map<Class<?>, TypeConverter> getConverters() { if (converters == null) { converters = new HashMap<Class<?>, TypeConverter>(); @@ -67,4 +73,51 @@ } return converter.convertFromString(string, type); } + + /** + * Convertit un nom de variable en nom de constante. + * + * @param variableName le nom de variable a convertir + * @return le nom de la constante à partir du nom de la variable + */ + public static String convertVariableNameToConstantName(String variableName) { + StringBuilder buffer = new StringBuilder(); + boolean lastCarIsUp = false; + char lastChar = '$'; + for (int i = 0, j = variableName.length(); i < j; i++) { + char c = variableName.charAt(i); + boolean carIsUp; + if (c == '!') { + buffer.append("NOT_"); + lastChar = '_'; + lastCarIsUp = true; + continue; + } + if (Character.isLetterOrDigit(c)) { + carIsUp = Character.isUpperCase(c); + } else { + carIsUp = false; + if (c != '$') { + // on remplace tous les caractères non standard par un _ + if (lastChar == '_' && c != '_') { + continue; + } + c = '_'; + } + } + + if (i > 0 && !lastCarIsUp && carIsUp) { + // ajout d'un _ + buffer.append('_'); + } + if (carIsUp) { + buffer.append(c); + } else { + buffer.append(Character.toUpperCase(c)); + } + lastCarIsUp = carIsUp || c == '$' || c == '_'; + lastChar = c; + } + return buffer.toString(); + } }
participants (1)
-
tchemit@users.nuiton.org