KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > tapestry > markup > MarkupFilterUtils


1 // Copyright 2005 The Apache Software Foundation
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14

15 package org.apache.tapestry.markup;
16
17 import java.io.PrintWriter JavaDoc;
18
19 import org.apache.tapestry.util.text.ICharacterTranslator;
20
21 /**
22  * For the meantime, implemenatations of {@link org.apache.tapestry.markup.MarkupFilter} are
23  * wrappers around {@link org.apache.tapestry.util.text.ICharacterTranslator}. This class provides
24  * handy methods for doing the grunt work.
25  *
26  * @author Howard M. Lewis Ship
27  * @since 4.0
28  */

29 public class MarkupFilterUtils
30 {
31     public static void print(PrintWriter JavaDoc writer, char[] data, int offset, int length,
32             boolean escapeQuotes, ICharacterTranslator translator)
33     {
34         StringBuffer JavaDoc buffer = new StringBuffer JavaDoc(length);
35
36         for (int i = 0; i < length; i++)
37         {
38             char ch = data[offset + i];
39
40             if (ch == '"' && !escapeQuotes)
41             {
42                 buffer.append(ch);
43                 continue;
44             }
45
46             String JavaDoc translated = translator.translate(ch);
47
48             if (translated == null)
49             {
50                 buffer.append(ch);
51                 continue;
52             }
53
54             buffer.append(translated);
55         }
56
57         // We'll have to see if building up a buffer and then printing it in one go is the
58
// most efficient route. It's hard to predict what will give the best performance,
59
// but there's almost certainly a buffered writer between this code and the
60
// character set encoder.
61

62         writer.print(buffer.toString());
63     }
64 }
Popular Tags