1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/GenJS.java Fri Sep 28 07:43:53 2012 +0200
1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/GenJS.java Sun Sep 30 19:40:04 2012 -0700
1.3 @@ -56,49 +56,7 @@
1.4 }
1.5 InputStream emul = GenJS.class.getResourceAsStream("emulation/" + name.replace('/', '_') + ".js");
1.6 if (emul != null) {
1.7 - try {
1.8 - int state = 0;
1.9 - for (;;) {
1.10 - int ch = emul.read();
1.11 - if (ch == -1) {
1.12 - break;
1.13 - }
1.14 - if (ch < 0 || ch > 255) {
1.15 - throw new IOException("Invalid char in emulation " + ch);
1.16 - }
1.17 - switch (state) {
1.18 - case 0:
1.19 - if (ch == '/') {
1.20 - state = 1;
1.21 - } else {
1.22 - out.append((char)ch);
1.23 - }
1.24 - break;
1.25 - case 1:
1.26 - if (ch == '*') {
1.27 - state = 2;
1.28 - } else {
1.29 - out.append('/').append((char)ch);
1.30 - state = 0;
1.31 - }
1.32 - break;
1.33 - case 2:
1.34 - if (ch == '*') {
1.35 - state = 3;
1.36 - }
1.37 - break;
1.38 - case 3:
1.39 - if (ch == '/') {
1.40 - state = 0;
1.41 - } else {
1.42 - state = 2;
1.43 - }
1.44 - break;
1.45 - }
1.46 - }
1.47 - } finally {
1.48 - emul.close();
1.49 - }
1.50 + readResource(emul, out);
1.51 continue;
1.52 }
1.53
1.54 @@ -128,5 +86,50 @@
1.55 }
1.56 }
1.57 }
1.58 + private static void readResource(InputStream emul, Appendable out) throws IOException {
1.59 + try {
1.60 + int state = 0;
1.61 + for (;;) {
1.62 + int ch = emul.read();
1.63 + if (ch == -1) {
1.64 + break;
1.65 + }
1.66 + if (ch < 0 || ch > 255) {
1.67 + throw new IOException("Invalid char in emulation " + ch);
1.68 + }
1.69 + switch (state) {
1.70 + case 0:
1.71 + if (ch == '/') {
1.72 + state = 1;
1.73 + } else {
1.74 + out.append((char)ch);
1.75 + }
1.76 + break;
1.77 + case 1:
1.78 + if (ch == '*') {
1.79 + state = 2;
1.80 + } else {
1.81 + out.append('/').append((char)ch);
1.82 + state = 0;
1.83 + }
1.84 + break;
1.85 + case 2:
1.86 + if (ch == '*') {
1.87 + state = 3;
1.88 + }
1.89 + break;
1.90 + case 3:
1.91 + if (ch == '/') {
1.92 + state = 0;
1.93 + } else {
1.94 + state = 2;
1.95 + }
1.96 + break;
1.97 + }
1.98 + }
1.99 + } finally {
1.100 + emul.close();
1.101 + }
1.102 + }
1.103
1.104 }