KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > gnu > jemacs > lang > Print


1 package gnu.jemacs.lang;
2 import gnu.kawa.functions.DisplayFormat;
3 import gnu.lists.Consumer;
4
5 public class Print extends DisplayFormat
6 {
7   public Print (boolean readable)
8   {
9     super(readable, 'E');
10   }
11
12   public static String JavaDoc escapeChar(int ch)
13   {
14     StringBuffer JavaDoc sbuf = new StringBuffer JavaDoc();
15     sbuf.append('?');
16     if (ch < ' ')
17       {
18     sbuf.append('\\');
19     switch (ch)
20       {
21       case '\t': sbuf.append('t'); break;
22       case '\n': sbuf.append('n'); break;
23       case '\r': sbuf.append('r'); break;
24       default:
25         sbuf.append('^');
26         sbuf.append((char) (ch + 64));
27         if ((ch + 64) == '\\')
28           sbuf.append('\\');
29       }
30       }
31     else if (ch < 127)
32       {
33     /* syntactically special characters should be escaped. */
34     switch (ch)
35       {
36       case ' ':
37       case '"':
38       case '#':
39       case '\'':
40       case '(':
41       case ')':
42       case ',':
43       case '.':
44       case ';':
45       case '?':
46       case '[':
47       case '\\':
48       case ']':
49       case '`':
50         sbuf.append('\\');
51       }
52     sbuf.append((char) ch);
53       }
54     else if (ch == 127)
55       sbuf.append("\\^?");
56     else
57       {
58     if (ch < 160)
59       sbuf.append("\\^");
60     sbuf.append(ch);
61       }
62     return sbuf.toString();
63   }
64
65   public void write (int v, Consumer out)
66   {
67     if (getReadableOutput ())
68       write(Print.escapeChar(v), out);
69     else
70       out.write(v);
71   }
72
73 }
74
Popular Tags