Encode package-info into package_0002dinfo closure
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Wed, 07 May 2014 11:41:41 +0200
branchclosure
changeset 15477c10f6d5635c
parent 1546 0d62e32b04b2
child 1548 225ba1d7bdc9
Encode package-info into package_0002dinfo
launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/CompileCP.java
rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
     1.1 --- a/launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/CompileCP.java	Wed May 07 11:39:31 2014 +0200
     1.2 +++ b/launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/CompileCP.java	Wed May 07 11:41:41 2014 +0200
     1.3 @@ -144,9 +144,6 @@
     1.4          while (en.hasMoreElements()) {
     1.5              JarEntry e = en.nextElement();
     1.6              final String n = e.getName();
     1.7 -            if (n.contains("package-info")) {
     1.8 -                continue;
     1.9 -            }
    1.10              if (n.endsWith("/")) {
    1.11                  continue;
    1.12              }
    1.13 @@ -192,9 +189,6 @@
    1.14      private static void listDir(File f, String pref, List<String> classes, List<String> resources) throws IOException {
    1.15          File[] arr = f.listFiles();
    1.16          if (arr == null) {
    1.17 -            if (f.getName().equals("package-info.class")) {
    1.18 -                return;
    1.19 -            }
    1.20              if (f.getName().endsWith(".class")) {
    1.21                  classes.add(pref + f.getName().substring(0, f.getName().length() - 6));
    1.22              } else {
     2.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Wed May 07 11:39:31 2014 +0200
     2.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Wed May 07 11:41:41 2014 +0200
     2.3 @@ -19,6 +19,7 @@
     2.4  
     2.5  import java.io.IOException;
     2.6  import java.io.InputStream;
     2.7 +import java.util.Locale;
     2.8  import static org.apidesign.vm4brwsr.ByteCodeParser.*;
     2.9  
    2.10  /** Translator of the code inside class files to JavaScript.
    2.11 @@ -1533,7 +1534,18 @@
    2.12                  case '_': sb.append("_1"); break;
    2.13                  case ';': sb.append("_2"); break;
    2.14                  case '[': sb.append("_3"); break;
    2.15 -                default: sb.append(ch); break;
    2.16 +                default: 
    2.17 +                    if (Character.isJavaIdentifierPart(ch)) {
    2.18 +                        sb.append(ch);
    2.19 +                    } else {
    2.20 +                        sb.append("_0");
    2.21 +                        String hex = Integer.toHexString(ch).toLowerCase(Locale.ENGLISH);
    2.22 +                        for (int m = hex.length(); m < 4; m++) {
    2.23 +                            sb.append("0");
    2.24 +                        }
    2.25 +                        sb.append(hex);
    2.26 +                    }
    2.27 +                break;
    2.28              }
    2.29          }
    2.30          return sb.toString();