1/* 2 * FCKeditor - The text editor for Internet - http://www.fckeditor.net 3 * Copyright (C) 2003-2007 Frederico Caldeira Knabben 4 * 5 * == BEGIN LICENSE == 6 * 7 * Licensed under the terms of any of the following licenses at your 8 * choice: 9 * 10 * - GNU General Public License Version 2 or later (the "GPL") 11 * http://www.gnu.org/licenses/gpl.html 12 * 13 * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") 14 * http://www.gnu.org/licenses/lgpl.html 15 * 16 * - Mozilla Public License Version 1.1 or later (the "MPL") 17 * http://www.mozilla.org/MPL/MPL-1.1.html 18 * 19 * == END LICENSE == 20 * 21 * This file define the HTML entities handled by the editor. 22 */ 23 24var FCKXHtmlEntities = new Object() ; 25 26FCKXHtmlEntities.Initialize = function() 27{ 28 if ( FCKXHtmlEntities.Entities ) 29 return ; 30 31 var sChars = '' ; 32 var oEntities, e ; 33 34 if ( FCKConfig.ProcessHTMLEntities ) 35 { 36 FCKXHtmlEntities.Entities = { 37 // Latin-1 Entities 38 ' ':'nbsp', 39 '¡':'iexcl', 40 '¢':'cent', 41 '£':'pound', 42 '¤':'curren', 43 '¥':'yen', 44 '¦':'brvbar', 45 '§':'sect', 46 '¨':'uml', 47 '©':'copy', 48 'ª':'ordf', 49 '«':'laquo', 50 '¬':'not', 51 '':'shy', 52 '®':'reg', 53 '¯':'macr', 54 '°':'deg', 55 '±':'plusmn', 56 '²':'sup2', 57 '³':'sup3', 58 '´':'acute', 59 'µ':'micro', 60 '¶':'para', 61 '·':'middot', 62 '¸':'cedil', 63 '¹':'sup1', 64 'º':'ordm', 65 '»':'raquo', 66 '¼':'frac14', 67 '½':'frac12', 68 '¾':'frac34', 69 '¿':'iquest', 70 '×':'times', 71 '÷':'divide', 72 73 // Symbols 74 75 'ƒ':'fnof', 76 '•':'bull', 77 '…':'hellip', 78 '′':'prime', 79 '″':'Prime', 80 '‾':'oline', 81 '⁄':'frasl', 82 '℘':'weierp', 83 'ℑ':'image', 84 'ℜ':'real', 85 '™':'trade', 86 'ℵ':'alefsym', 87 '←':'larr', 88 '↑':'uarr', 89 '→':'rarr', 90 '↓':'darr', 91 '↔':'harr', 92 '↵':'crarr', 93 '⇐':'lArr', 94 '⇑':'uArr', 95 '⇒':'rArr', 96 '⇓':'dArr', 97 '⇔':'hArr', 98 '∀':'forall', 99 '∂':'part', 100 '∃':'exist', 101 '∅':'empty', 102 '∇':'nabla', 103 '∈':'isin', 104 '∉':'notin', 105 '∋':'ni', 106 '∏':'prod', 107 '∑':'sum', 108 '−':'minus', 109 '∗':'lowast', 110 '√':'radic', 111 '∝':'prop', 112 '∞':'infin', 113 '∠':'ang', 114 '∧':'and', 115 '∨':'or', 116 '∩':'cap', 117 '∪':'cup', 118 '∫':'int', 119 '∴':'there4', 120 '∼':'sim', 121 '≅':'cong', 122 '≈':'asymp', 123 '≠':'ne', 124 '≡':'equiv', 125 '≤':'le', 126 '≥':'ge', 127 '⊂':'sub', 128 '⊃':'sup', 129 '⊄':'nsub', 130 '⊆':'sube', 131 '⊇':'supe', 132 '⊕':'oplus', 133 '⊗':'otimes', 134 '⊥':'perp', 135 '⋅':'sdot', 136 '\u2308':'lceil', 137 '\u2309':'rceil', 138 '\u230a':'lfloor', 139 '\u230b':'rfloor', 140 '\u2329':'lang', 141 '\u232a':'rang', 142 '◊':'loz', 143 '♠':'spades', 144 '♣':'clubs', 145 '♥':'hearts', 146 '♦':'diams', 147 148 // Other Special Characters 149 150 '"':'quot', 151 // '&':'amp', // This entity is automatically handled by the XHTML parser. 152 // '<':'lt', // This entity is automatically handled by the XHTML parser. 153 // '>':'gt', // This entity is automatically handled by the XHTML parser. 154 'ˆ':'circ', 155 '˜':'tilde', 156 ' ':'ensp', 157 ' ':'emsp', 158 ' ':'thinsp', 159 '':'zwnj', 160 '':'zwj', 161 '':'lrm', 162 '':'rlm', 163 '–':'ndash', 164 '—':'mdash', 165 '‘':'lsquo', 166 '’':'rsquo', 167 '‚':'sbquo', 168 '“':'ldquo', 169 '”':'rdquo', 170 '„':'bdquo', 171 '†':'dagger', 172 '‡':'Dagger', 173 '‰':'permil', 174 '‹':'lsaquo', 175 '›':'rsaquo', 176 '€':'euro' 177 } ; 178 179 // Process Base Entities. 180 for ( e in FCKXHtmlEntities.Entities ) 181 sChars += e ; 182 183 // Include Latin Letters Entities. 184 if ( FCKConfig.IncludeLatinEntities ) 185 { 186 oEntities = { 187 'À':'Agrave', 188 'Á':'Aacute', 189 'Â':'Acirc', 190 'Ã':'Atilde', 191 'Ä':'Auml', 192 'Å':'Aring', 193 'Æ':'AElig', 194 'Ç':'Ccedil', 195 'È':'Egrave', 196 'É':'Eacute', 197 'Ê':'Ecirc', 198 'Ë':'Euml', 199 'Ì':'Igrave', 200 'Í':'Iacute', 201 'Î':'Icirc', 202 'Ï':'Iuml', 203 'Ð':'ETH', 204 'Ñ':'Ntilde', 205 'Ò':'Ograve', 206 'Ó':'Oacute', 207 'Ô':'Ocirc', 208 'Õ':'Otilde', 209 'Ö':'Ouml', 210 'Ø':'Oslash', 211 'Ù':'Ugrave', 212 'Ú':'Uacute', 213 'Û':'Ucirc', 214 'Ü':'Uuml', 215 'Ý':'Yacute', 216 'Þ':'THORN', 217 'ß':'szlig', 218 'à':'agrave', 219 'á':'aacute', 220 'â':'acirc', 221 'ã':'atilde', 222 'ä':'auml', 223 'å':'aring', 224 'æ':'aelig', 225 'ç':'ccedil', 226 'è':'egrave', 227 'é':'eacute', 228 'ê':'ecirc', 229 'ë':'euml', 230 'ì':'igrave', 231 'í':'iacute', 232 'î':'icirc', 233 'ï':'iuml', 234 'ð':'eth', 235 'ñ':'ntilde', 236 'ò':'ograve', 237 'ó':'oacute', 238 'ô':'ocirc', 239 'õ':'otilde', 240 'ö':'ouml', 241 'ø':'oslash', 242 'ù':'ugrave', 243 'ú':'uacute', 244 'û':'ucirc', 245 'ü':'uuml', 246 'ý':'yacute', 247 'þ':'thorn', 248 'ÿ':'yuml', 249 'Œ':'OElig', 250 'œ':'oelig', 251 'Š':'Scaron', 252 'š':'scaron', 253 'Ÿ':'Yuml' 254 } ; 255 256 for ( e in oEntities ) 257 { 258 FCKXHtmlEntities.Entities[ e ] = oEntities[ e ] ; 259 sChars += e ; 260 } 261 262 oEntities = null ; 263 } 264 265 // Include Greek Letters Entities. 266 if ( FCKConfig.IncludeGreekEntities ) 267 { 268 oEntities = { 269 'Α':'Alpha', 270 'Β':'Beta', 271 'Γ':'Gamma', 272 'Δ':'Delta', 273 'Ε':'Epsilon', 274 'Ζ':'Zeta', 275 'Η':'Eta', 276 'Θ':'Theta', 277 'Ι':'Iota', 278 'Κ':'Kappa', 279 'Λ':'Lambda', 280 'Μ':'Mu', 281 'Ν':'Nu', 282 'Ξ':'Xi', 283 'Ο':'Omicron', 284 'Π':'Pi', 285 'Ρ':'Rho', 286 'Σ':'Sigma', 287 'Τ':'Tau', 288 'Υ':'Upsilon', 289 'Φ':'Phi', 290 'Χ':'Chi', 291 'Ψ':'Psi', 292 'Ω':'Omega', 293 'α':'alpha', 294 'β':'beta', 295 'γ':'gamma', 296 'δ':'delta', 297 'ε':'epsilon', 298 'ζ':'zeta', 299 'η':'eta', 300 'θ':'theta', 301 'ι':'iota', 302 'κ':'kappa', 303 'λ':'lambda', 304 'μ':'mu', 305 'ν':'nu', 306 'ξ':'xi', 307 'ο':'omicron', 308 'π':'pi', 309 'ρ':'rho', 310 'ς':'sigmaf', 311 'σ':'sigma', 312 'τ':'tau', 313 'υ':'upsilon', 314 'φ':'phi', 315 'χ':'chi', 316 'ψ':'psi', 317 'ω':'omega', 318 '\u03d1':'thetasym', 319 '\u03d2':'upsih', 320 '\u03d6':'piv' 321 } ; 322 323 for ( e in oEntities ) 324 { 325 FCKXHtmlEntities.Entities[ e ] = oEntities[ e ] ; 326 sChars += e ; 327 } 328 329 oEntities = null ; 330 } 331 } 332 else 333 { 334 FCKXHtmlEntities.Entities = {} ; 335 336 // Even if we are not processing the entities, we must render the 337 // correctly. As we don't want HTML entities, let's use its numeric 338 // representation ( ). 339 sChars = ' ' ; 340 } 341 342 // Create the Regex used to find entities in the text. 343 var sRegexPattern = '[' + sChars + ']' ; 344 345 if ( FCKConfig.ProcessNumericEntities ) 346 sRegexPattern = '[^ -~]|' + sRegexPattern ; 347 348 var sAdditional = FCKConfig.AdditionalNumericEntities ; 349 350 if ( sAdditional && sAdditional.length > 0 ) 351 sRegexPattern += '|' + FCKConfig.AdditionalNumericEntities ; 352 353 FCKXHtmlEntities.EntitiesRegex = new RegExp( sRegexPattern, 'g' ) ; 354} 355