Lucene.Net  3.0.3
Lucene.Net is a port of the Lucene search engine library, written in C# and targeted at .NET runtime users.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Pages
Entities.cs
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 using System;
19 
20 namespace Lucene.Net.Demo.Html
21 {
22 
23  public class Entities
24  {
25  internal static readonly System.Collections.Hashtable decoder = new System.Collections.Hashtable(300);
26  internal static readonly System.String[] encoder = new System.String[0x100];
27 
28  internal static System.String Decode(System.String entity)
29  {
30  if (entity[entity.Length - 1] == ';')
31  // remove trailing semicolon
32  entity = entity.Substring(0, (entity.Length - 1) - (0));
33  if (entity[1] == '#')
34  {
35  int start = 2;
36  int radix = 10;
37  if (entity[2] == 'X' || entity[2] == 'x')
38  {
39  start++;
40  radix = 16;
41  }
42  System.Char c = (char) System.Convert.ToInt32(entity.Substring(start), radix);
43  return c.ToString();
44  }
45  else
46  {
47  System.String s = (System.String) decoder[entity];
48  if (s != null)
49  return s;
50  else
51  return "";
52  }
53  }
54 
55  public static System.String Encode(System.String s)
56  {
57  int length = s.Length;
58  System.Text.StringBuilder buffer = new System.Text.StringBuilder(length * 2);
59  for (int i = 0; i < length; i++)
60  {
61  char c = s[i];
62  int j = (int) c;
63  if (j < 0x100 && encoder[j] != null)
64  {
65  buffer.Append(encoder[j]); // have a named encoding
66  buffer.Append(';');
67  }
68  else if (j < 0x80)
69  {
70  buffer.Append(c); // use ASCII value
71  }
72  else
73  {
74  buffer.Append("&#"); // use numeric encoding
75  buffer.Append((int) c);
76  buffer.Append(';');
77  }
78  }
79  return buffer.ToString();
80  }
81 
82  internal static void Add(System.String entity, int value_Renamed)
83  {
84  decoder[entity] = ((char) value_Renamed).ToString();
85  if (value_Renamed < 0x100)
86  encoder[value_Renamed] = entity;
87  }
88  static Entities()
89  {
90  {
91  Add("&nbsp", 160);
92  Add("&iexcl", 161);
93  Add("&cent", 162);
94  Add("&pound", 163);
95  Add("&curren", 164);
96  Add("&yen", 165);
97  Add("&brvbar", 166);
98  Add("&sect", 167);
99  Add("&uml", 168);
100  Add("&copy", 169);
101  Add("&ordf", 170);
102  Add("&laquo", 171);
103  Add("&not", 172);
104  Add("&shy", 173);
105  Add("&reg", 174);
106  Add("&macr", 175);
107  Add("&deg", 176);
108  Add("&plusmn", 177);
109  Add("&sup2", 178);
110  Add("&sup3", 179);
111  Add("&acute", 180);
112  Add("&micro", 181);
113  Add("&para", 182);
114  Add("&middot", 183);
115  Add("&cedil", 184);
116  Add("&sup1", 185);
117  Add("&ordm", 186);
118  Add("&raquo", 187);
119  Add("&frac14", 188);
120  Add("&frac12", 189);
121  Add("&frac34", 190);
122  Add("&iquest", 191);
123  Add("&Agrave", 192);
124  Add("&Aacute", 193);
125  Add("&Acirc", 194);
126  Add("&Atilde", 195);
127  Add("&Auml", 196);
128  Add("&Aring", 197);
129  Add("&AElig", 198);
130  Add("&Ccedil", 199);
131  Add("&Egrave", 200);
132  Add("&Eacute", 201);
133  Add("&Ecirc", 202);
134  Add("&Euml", 203);
135  Add("&Igrave", 204);
136  Add("&Iacute", 205);
137  Add("&Icirc", 206);
138  Add("&Iuml", 207);
139  Add("&ETH", 208);
140  Add("&Ntilde", 209);
141  Add("&Ograve", 210);
142  Add("&Oacute", 211);
143  Add("&Ocirc", 212);
144  Add("&Otilde", 213);
145  Add("&Ouml", 214);
146  Add("&times", 215);
147  Add("&Oslash", 216);
148  Add("&Ugrave", 217);
149  Add("&Uacute", 218);
150  Add("&Ucirc", 219);
151  Add("&Uuml", 220);
152  Add("&Yacute", 221);
153  Add("&THORN", 222);
154  Add("&szlig", 223);
155  Add("&agrave", 224);
156  Add("&aacute", 225);
157  Add("&acirc", 226);
158  Add("&atilde", 227);
159  Add("&auml", 228);
160  Add("&aring", 229);
161  Add("&aelig", 230);
162  Add("&ccedil", 231);
163  Add("&egrave", 232);
164  Add("&eacute", 233);
165  Add("&ecirc", 234);
166  Add("&euml", 235);
167  Add("&igrave", 236);
168  Add("&iacute", 237);
169  Add("&icirc", 238);
170  Add("&iuml", 239);
171  Add("&eth", 240);
172  Add("&ntilde", 241);
173  Add("&ograve", 242);
174  Add("&oacute", 243);
175  Add("&ocirc", 244);
176  Add("&otilde", 245);
177  Add("&ouml", 246);
178  Add("&divide", 247);
179  Add("&oslash", 248);
180  Add("&ugrave", 249);
181  Add("&uacute", 250);
182  Add("&ucirc", 251);
183  Add("&uuml", 252);
184  Add("&yacute", 253);
185  Add("&thorn", 254);
186  Add("&yuml", 255);
187  Add("&fnof", 402);
188  Add("&Alpha", 913);
189  Add("&Beta", 914);
190  Add("&Gamma", 915);
191  Add("&Delta", 916);
192  Add("&Epsilon", 917);
193  Add("&Zeta", 918);
194  Add("&Eta", 919);
195  Add("&Theta", 920);
196  Add("&Iota", 921);
197  Add("&Kappa", 922);
198  Add("&Lambda", 923);
199  Add("&Mu", 924);
200  Add("&Nu", 925);
201  Add("&Xi", 926);
202  Add("&Omicron", 927);
203  Add("&Pi", 928);
204  Add("&Rho", 929);
205  Add("&Sigma", 931);
206  Add("&Tau", 932);
207  Add("&Upsilon", 933);
208  Add("&Phi", 934);
209  Add("&Chi", 935);
210  Add("&Psi", 936);
211  Add("&Omega", 937);
212  Add("&alpha", 945);
213  Add("&beta", 946);
214  Add("&gamma", 947);
215  Add("&delta", 948);
216  Add("&epsilon", 949);
217  Add("&zeta", 950);
218  Add("&eta", 951);
219  Add("&theta", 952);
220  Add("&iota", 953);
221  Add("&kappa", 954);
222  Add("&lambda", 955);
223  Add("&mu", 956);
224  Add("&nu", 957);
225  Add("&xi", 958);
226  Add("&omicron", 959);
227  Add("&pi", 960);
228  Add("&rho", 961);
229  Add("&sigmaf", 962);
230  Add("&sigma", 963);
231  Add("&tau", 964);
232  Add("&upsilon", 965);
233  Add("&phi", 966);
234  Add("&chi", 967);
235  Add("&psi", 968);
236  Add("&omega", 969);
237  Add("&thetasym", 977);
238  Add("&upsih", 978);
239  Add("&piv", 982);
240  Add("&bull", 8226);
241  Add("&hellip", 8230);
242  Add("&prime", 8242);
243  Add("&Prime", 8243);
244  Add("&oline", 8254);
245  Add("&frasl", 8260);
246  Add("&weierp", 8472);
247  Add("&image", 8465);
248  Add("&real", 8476);
249  Add("&trade", 8482);
250  Add("&alefsym", 8501);
251  Add("&larr", 8592);
252  Add("&uarr", 8593);
253  Add("&rarr", 8594);
254  Add("&darr", 8595);
255  Add("&harr", 8596);
256  Add("&crarr", 8629);
257  Add("&lArr", 8656);
258  Add("&uArr", 8657);
259  Add("&rArr", 8658);
260  Add("&dArr", 8659);
261  Add("&hArr", 8660);
262  Add("&forall", 8704);
263  Add("&part", 8706);
264  Add("&exist", 8707);
265  Add("&empty", 8709);
266  Add("&nabla", 8711);
267  Add("&isin", 8712);
268  Add("&notin", 8713);
269  Add("&ni", 8715);
270  Add("&prod", 8719);
271  Add("&sum", 8721);
272  Add("&minus", 8722);
273  Add("&lowast", 8727);
274  Add("&radic", 8730);
275  Add("&prop", 8733);
276  Add("&infin", 8734);
277  Add("&ang", 8736);
278  Add("&and", 8743);
279  Add("&or", 8744);
280  Add("&cap", 8745);
281  Add("&cup", 8746);
282  Add("&int", 8747);
283  Add("&there4", 8756);
284  Add("&sim", 8764);
285  Add("&cong", 8773);
286  Add("&asymp", 8776);
287  Add("&ne", 8800);
288  Add("&equiv", 8801);
289  Add("&le", 8804);
290  Add("&ge", 8805);
291  Add("&sub", 8834);
292  Add("&sup", 8835);
293  Add("&nsub", 8836);
294  Add("&sube", 8838);
295  Add("&supe", 8839);
296  Add("&oplus", 8853);
297  Add("&otimes", 8855);
298  Add("&perp", 8869);
299  Add("&sdot", 8901);
300  Add("&lceil", 8968);
301  Add("&rceil", 8969);
302  Add("&lfloor", 8970);
303  Add("&rfloor", 8971);
304  Add("&lang", 9001);
305  Add("&rang", 9002);
306  Add("&loz", 9674);
307  Add("&spades", 9824);
308  Add("&clubs", 9827);
309  Add("&hearts", 9829);
310  Add("&diams", 9830);
311  Add("&quot", 34);
312  Add("&amp", 38);
313  Add("&lt", 60);
314  Add("&gt", 62);
315  Add("&OElig", 338);
316  Add("&oelig", 339);
317  Add("&Scaron", 352);
318  Add("&scaron", 353);
319  Add("&Yuml", 376);
320  Add("&circ", 710);
321  Add("&tilde", 732);
322  Add("&ensp", 8194);
323  Add("&emsp", 8195);
324  Add("&thinsp", 8201);
325  Add("&zwnj", 8204);
326  Add("&zwj", 8205);
327  Add("&lrm", 8206);
328  Add("&rlm", 8207);
329  Add("&ndash", 8211);
330  Add("&mdash", 8212);
331  Add("&lsquo", 8216);
332  Add("&rsquo", 8217);
333  Add("&sbquo", 8218);
334  Add("&ldquo", 8220);
335  Add("&rdquo", 8221);
336  Add("&bdquo", 8222);
337  Add("&dagger", 8224);
338  Add("&Dagger", 8225);
339  Add("&permil", 8240);
340  Add("&lsaquo", 8249);
341  Add("&rsaquo", 8250);
342  Add("&euro", 8364);
343  }
344  }
345  }
346 }