01: package org.apache.lucene.search.highlight;
02:
03: /**
04: * Copyright 2005 The Apache Software Foundation
05: *
06: * Licensed under the Apache License, Version 2.0 (the "License");
07: * you may not use this file except in compliance with the License.
08: * You may obtain a copy of the License at
09: *
10: * http://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing, software
13: * distributed under the License is distributed on an "AS IS" BASIS,
14: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15: * See the License for the specific language governing permissions and
16: * limitations under the License.
17: */
18:
19: /**
20: * Simple {@link Encoder} implementation to escape text for HTML output
21: *
22: * @author Nicko Cadell
23: */
24: public class SimpleHTMLEncoder implements Encoder {
25: public SimpleHTMLEncoder() {
26: }
27:
28: public String encodeText(String originalText) {
29: return htmlEncode(originalText);
30: }
31:
32: /**
33: * Encode string into HTML
34: */
35: public final static String htmlEncode(String plainText) {
36: if (plainText == null || plainText.length() == 0) {
37: return "";
38: }
39:
40: StringBuffer result = new StringBuffer(plainText.length());
41:
42: for (int index = 0; index < plainText.length(); index++) {
43: char ch = plainText.charAt(index);
44:
45: switch (ch) {
46: case '"':
47: result.append(""");
48: break;
49:
50: case '&':
51: result.append("&");
52: break;
53:
54: case '<':
55: result.append("<");
56: break;
57:
58: case '>':
59: result.append(">");
60: break;
61:
62: default:
63: if (ch < 128) {
64: result.append(ch);
65: } else {
66: result.append("&#").append((int) ch).append(";");
67: }
68: }
69: }
70:
71: return result.toString();
72: }
73: }
|