1 16 package com.google.gwt.i18n.rebind; 17 18 import com.google.gwt.core.ext.TreeLogger; 19 import com.google.gwt.core.ext.typeinfo.JMethod; 20 import com.google.gwt.user.rebind.AbstractGeneratorClassCreator; 21 22 25 class ConstantsStringArrayMethodCreator extends 26 AbstractLocalizableMethodCreator { 27 28 static String [] split(String target) { 29 target = target + "~"; 32 33 String [] args = target.split("(?<![\\\\]),"); 35 36 if (args.length > 0) { 41 int last = args.length - 1; 42 args[last] = args[last].substring(0, args[last].length() - 1); 43 } 44 45 for (int i = 0; i < args.length; i++) { 46 args[i] = args[i].replaceAll("\\\\,", ",").trim(); 47 } 48 49 return args; 50 } 51 52 57 public ConstantsStringArrayMethodCreator( 58 AbstractGeneratorClassCreator classCreator) { 59 super(classCreator); 60 } 61 62 public void createMethodFor(TreeLogger logger, JMethod method, String template) { 63 String methodName = method.getName(); 64 enableCache(); 66 println("String args[] = (String[]) cache.get(" + wrap(methodName) + ");"); 68 print("if (args == null){\n String [] writer= {"); 70 String [] args = split(template); 71 for (int i = 0; i < args.length; i++) { 72 if (i != 0) { 73 print(", "); 74 } 75 String toPrint = args[i].replaceAll("\\,", ","); 76 print(wrap(toPrint)); 77 } 78 println("}; "); 79 println("cache.put(" + wrap(methodName) + ", writer);"); 81 println("return writer;"); 82 println("} else"); 83 println("return args;"); 84 } 85 } 86 | Popular Tags |