rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
branchclosure
changeset 1547 7c10f6d5635c
parent 1543 bafa63ac44a2
child 1558 0c5a8b83182a
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Wed May 07 10:01:54 2014 +0200
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Wed May 07 11:41:41 2014 +0200
     1.3 @@ -19,6 +19,7 @@
     1.4  
     1.5  import java.io.IOException;
     1.6  import java.io.InputStream;
     1.7 +import java.util.Locale;
     1.8  import static org.apidesign.vm4brwsr.ByteCodeParser.*;
     1.9  
    1.10  /** Translator of the code inside class files to JavaScript.
    1.11 @@ -1533,7 +1534,18 @@
    1.12                  case '_': sb.append("_1"); break;
    1.13                  case ';': sb.append("_2"); break;
    1.14                  case '[': sb.append("_3"); break;
    1.15 -                default: sb.append(ch); break;
    1.16 +                default: 
    1.17 +                    if (Character.isJavaIdentifierPart(ch)) {
    1.18 +                        sb.append(ch);
    1.19 +                    } else {
    1.20 +                        sb.append("_0");
    1.21 +                        String hex = Integer.toHexString(ch).toLowerCase(Locale.ENGLISH);
    1.22 +                        for (int m = hex.length(); m < 4; m++) {
    1.23 +                            sb.append("0");
    1.24 +                        }
    1.25 +                        sb.append(hex);
    1.26 +                    }
    1.27 +                break;
    1.28              }
    1.29          }
    1.30          return sb.toString();