KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > teamkonzept > lib > TKJavaScriptConverter


1 /*
2  * $Header: /cvsroot/webman-cms/source/webman/com/teamkonzept/lib/TKJavaScriptConverter.java,v 1.2 2000/07/27 10:00:25 alex Exp $
3  *
4  */

5 package com.teamkonzept.lib;
6
7 /**
8     Konvertierungsklasse fuer ANSI-Codierung
9 */

10 public class TKJavaScriptConverter extends TKConverter {
11
12     public final static String JavaDoc CONV_ID = "JS";
13     public final static String JavaDoc CONV_NAME = "JAVASCRIPT";
14     
15     public String JavaDoc getName()
16     {
17         return CONV_NAME;
18     }
19
20     public int getMaxBytesPerChar()
21     {
22         return 4;
23     }
24
25     public int minCharSize(int byteCount)
26     {
27         return byteCount;
28     }
29
30     public int charsToBytes(char src[], byte dst[], int srcBegin, int length, int dstBegin)
31     {
32         String JavaDoc back = encodeJavaScript(src, srcBegin, length);
33         back.getBytes(0, back.length(), dst, dstBegin);
34         return back.length();
35     }
36
37     public int bytesToChars(byte src[], char dst[], int srcBegin, int length, int dstBegin)
38     {
39         String JavaDoc srcIn = new String JavaDoc(src);
40         String JavaDoc back = encodeJavaScript(srcIn.toCharArray(), srcBegin, length);
41         back.getChars(0, back.length(), dst, dstBegin);
42         return back.length();
43     }
44
45     public static String JavaDoc encodeJavaScript(char[] in, int start, int length)
46     {
47         if (in == null)
48             return null;
49         
50         StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
51         int end = start+length;
52         for (int i = start; i < end; i++)
53         {
54             char ch = in[i];
55             switch ( ch)
56             {
57                 case '\'':
58                 case '\"':
59                 case '\\':
60                     int eins = conv(ch/16);
61                     int zwei = conv(ch%16);
62                     buf.append("\\x" + new Character JavaDoc((char)eins) + new Character JavaDoc((char)zwei));
63                     break;
64                 default:
65                     if (ch < 32)
66                     {
67                         eins = conv(ch/16);
68                         zwei = conv(ch%16);
69                         buf.append("\\x" + new Character JavaDoc((char)eins) + new Character JavaDoc((char)zwei));
70                     }
71                     else
72                         buf.append(ch);
73                     break;
74             }
75         }
76         return buf.toString();
77     }
78
79     private static int conv(int in)
80     {
81         if (in >=10)
82             return 55+in;
83         else
84             return 48+in;
85     }
86
87 }
88
89
Popular Tags