Clover Coverage Report
Coverage timestamp: Fri May 9 2008 10:54:27 EST
../../../../img/srcFileCovDistChart10.png 0% of files have more coverage
127   167   70   42.33
4   137   0.55   3
3     23.33  
1    
 
  ISOLatin1AccentFilter       Line # 26 127 70 100% 1.0
 
  (1)
 
1    package org.apache.lucene.analysis;
2   
3    /**
4    * Copyright 2005 The Apache Software Foundation
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
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    * A filter that replaces accented characters in the ISO Latin 1 character set
21    * (ISO-8859-1) by their unaccented equivalent. The case will not be altered.
22    * <p>
23    * For instance, '&agrave;' will be replaced by 'a'.
24    * <p>
25    */
 
26    public class ISOLatin1AccentFilter extends TokenFilter {
 
27  1 toggle public ISOLatin1AccentFilter(TokenStream input) {
28  1 super(input);
29    }
30   
 
31  72 toggle public final Token next() throws java.io.IOException {
32  72 final Token t = input.next();
33  72 if (t != null)
34  71 t.setTermText(removeAccents(t.termText()));
35  72 return t;
36    }
37   
38    /**
39    * To replace accented characters in a String by unaccented equivalents.
40    */
 
41  71 toggle public final static String removeAccents(String input) {
42  71 final StringBuffer output = new StringBuffer();
43  155 for (int i = 0; i < input.length(); i++) {
44  84 switch (input.charAt(i)) {
45  2 case '\u00C0' : // À
46  1 case '\u00C1' : // Á
47  1 case '\u00C2' : // Â
48  1 case '\u00C3' : // Ã
49  1 case '\u00C4' : // Ä
50  1 case '\u00C5' : // Å
51  7 output.append("A");
52  7 break;
53  1 case '\u00C6' : // Æ
54  1 output.append("AE");
55  1 break;
56  1 case '\u00C7' : // Ç
57  1 output.append("C");
58  1 break;
59  1 case '\u00C8' : // È
60  1 case '\u00C9' : // É
61  1 case '\u00CA' : // Ê
62  1 case '\u00CB' : // Ë
63  4 output.append("E");
64  4 break;
65  1 case '\u00CC' : // Ì
66  1 case '\u00CD' : // Í
67  2 case '\u00CE' : // Î
68  1 case '\u00CF' : // Ï
69  5 output.append("I");
70  5 break;
71  1 case '\u00D0' : // Ð
72  1 output.append("D");
73  1 break;
74  1 case '\u00D1' : // Ñ
75  1 output.append("N");
76  1 break;
77  1 case '\u00D2' : // Ò
78  1 case '\u00D3' : // Ó
79  1 case '\u00D4' : // Ô
80  1 case '\u00D5' : // Õ
81  1 case '\u00D6' : // Ö
82  1 case '\u00D8' : // Ø
83  6 output.append("O");
84  6 break;
85  1 case '\u0152' : // Œ
86  1 output.append("OE");
87  1 break;
88  1 case '\u00DE' : // Þ
89  1 output.append("TH");
90  1 break;
91  1 case '\u00D9' : // Ù
92  1 case '\u00DA' : // Ú
93  1 case '\u00DB' : // Û
94  1 case '\u00DC' : // Ü
95  4 output.append("U");
96  4 break;
97  1 case '\u00DD' : // Ý
98  1 case '\u0178' : // Ÿ
99  2 output.append("Y");
100  2 break;
101  1 case '\u00E0' : // à
102  1 case '\u00E1' : // á
103  1 case '\u00E2' : // â
104  1 case '\u00E3' : // ã
105  1 case '\u00E4' : // ä
106  1 case '\u00E5' : // å
107  6 output.append("a");
108  6 break;
109  1 case '\u00E6' : // æ
110  1 output.append("ae");
111  1 break;
112  1 case '\u00E7' : // ç
113  1 output.append("c");
114  1 break;
115  1 case '\u00E8' : // è
116  2 case '\u00E9' : // é
117  1 case '\u00EA' : // ê
118  1 case '\u00EB' : // ë
119  5 output.append("e");
120  5 break;
121  1 case '\u00EC' : // ì
122  1 case '\u00ED' : // í
123  1 case '\u00EE' : // î
124  1 case '\u00EF' : // ï
125  4 output.append("i");
126  4 break;
127  1 case '\u00F0' : // ð
128  1 output.append("d");
129  1 break;
130  1 case '\u00F1' : // ñ
131  1 output.append("n");
132  1 break;
133  1 case '\u00F2' : // ò
134  1 case '\u00F3' : // ó
135  1 case '\u00F4' : // ô
136  1 case '\u00F5' : // õ
137  1 case '\u00F6' : // ö
138  1 case '\u00F8' : // ø
139  6 output.append("o");
140  6 break;
141  1 case '\u0153' : // œ
142  1 output.append("oe");
143  1 break;
144  1 case '\u00DF' : // ß
145  1 output.append("ss");
146  1 break;
147  1 case '\u00FE' : // þ
148  1 output.append("th");
149  1 break;
150  1 case '\u00F9' : // ù
151  1 case '\u00FA' : // ú
152  1 case '\u00FB' : // û
153  1 case '\u00FC' : // ü
154  4 output.append("u");
155  4 break;
156  1 case '\u00FD' : // ý
157  1 case '\u00FF' : // ÿ
158  2 output.append("y");
159  2 break;
160  16 default :
161  16 output.append(input.charAt(i));
162  16 break;
163    }
164    }
165  71 return output.toString();
166    }
167    }