/* * FCKeditor - The text editor for Internet - http://www.fckeditor.net * Copyright (C) 2003-2009 Frederico Caldeira Knabben * * == BEGIN LICENSE == * * Licensed under the terms of any of the following licenses at your * choice: * * - GNU General Public License Version 2 or later (the "GPL") * http://www.gnu.org/licenses/gpl.html * * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") * http://www.gnu.org/licenses/lgpl.html * * - Mozilla Public License Version 1.1 or later (the "MPL") * http://www.mozilla.org/MPL/MPL-1.1.html * * == END LICENSE == * * This file define the HTML entities handled by the editor. */ var FCKXHtmlEntities = new Object() ; FCKXHtmlEntities.Initialize = function() { if ( FCKXHtmlEntities.Entities ) return ; var sChars = '' ; var oEntities, e ; if ( FCKConfig.ProcessHTMLEntities ) { FCKXHtmlEntities.Entities = { // Latin-1 Entities ' ':'nbsp', '¡':'iexcl', '¢':'cent', '£':'pound', '¤':'curren', '¥':'yen', '¦':'brvbar', '§':'sect', '¨':'uml', '©':'copy', 'ª':'ordf', '«':'laquo', '¬':'not', '':'shy', '®':'reg', '¯':'macr', '°':'deg', '±':'plusmn', '²':'sup2', '³':'sup3', '´':'acute', 'µ':'micro', '¶':'para', '·':'middot', '¸':'cedil', '¹':'sup1', 'º':'ordm', '»':'raquo', '¼':'frac14', '½':'frac12', '¾':'frac34', '¿':'iquest', '×':'times', '÷':'divide', // Symbols 'ƒ':'fnof', '•':'bull', '…':'hellip', '′':'prime', '″':'Prime', '‾':'oline', '⁄':'frasl', '℘':'weierp', 'ℑ':'image', 'ℜ':'real', '™':'trade', 'ℵ':'alefsym', '←':'larr', '↑':'uarr', '→':'rarr', '↓':'darr', '↔':'harr', '↵':'crarr', '⇐':'lArr', '⇑':'uArr', '⇒':'rArr', '⇓':'dArr', '⇔':'hArr', '∀':'forall', '∂':'part', '∃':'exist', '∅':'empty', '∇':'nabla', '∈':'isin', '∉':'notin', '∋':'ni', '∏':'prod', '∑':'sum', '−':'minus', '∗':'lowast', '√':'radic', '∝':'prop', '∞':'infin', '∠':'ang', '∧':'and', '∨':'or', '∩':'cap', '∪':'cup', '∫':'int', '∴':'there4', '∼':'sim', '≅':'cong', '≈':'asymp', '≠':'ne', '≡':'equiv', '≤':'le', '≥':'ge', '⊂':'sub', '⊃':'sup', '⊄':'nsub', '⊆':'sube', '⊇':'supe', '⊕':'oplus', '⊗':'otimes', '⊥':'perp', '⋅':'sdot', '\u2308':'lceil', '\u2309':'rceil', '\u230a':'lfloor', '\u230b':'rfloor', '\u2329':'lang', '\u232a':'rang', '◊':'loz', '♠':'spades', '♣':'clubs', '♥':'hearts', '♦':'diams', // Other Special Characters '"':'quot', // '&':'amp', // This entity is automatically handled by the XHTML parser. // '<':'lt', // This entity is automatically handled by the XHTML parser. '>':'gt', // Opera and Safari don't encode it in their implementation 'ˆ':'circ', '˜':'tilde', ' ':'ensp', ' ':'emsp', ' ':'thinsp', '':'zwnj', '':'zwj', '':'lrm', '':'rlm', '–':'ndash', '—':'mdash', '‘':'lsquo', '’':'rsquo', '‚':'sbquo', '“':'ldquo', '”':'rdquo', '„':'bdquo', '†':'dagger', '‡':'Dagger', '‰':'permil', '‹':'lsaquo', '›':'rsaquo', '€':'euro' } ; // Process Base Entities. for ( e in FCKXHtmlEntities.Entities ) sChars += e ; // Include Latin Letters Entities. if ( FCKConfig.IncludeLatinEntities ) { oEntities = { 'À':'Agrave', 'Á':'Aacute', 'Â':'Acirc', 'Ã':'Atilde', 'Ä':'Auml', 'Å':'Aring', 'Æ':'AElig', 'Ç':'Ccedil', 'È':'Egrave', 'É':'Eacute', 'Ê':'Ecirc', 'Ë':'Euml', 'Ì':'Igrave', 'Í':'Iacute', 'Î':'Icirc', 'Ï':'Iuml', 'Ð':'ETH', 'Ñ':'Ntilde', 'Ò':'Ograve', 'Ó':'Oacute', 'Ô':'Ocirc', 'Õ':'Otilde', 'Ö':'Ouml', 'Ø':'Oslash', 'Ù':'Ugrave', 'Ú':'Uacute', 'Û':'Ucirc', 'Ü':'Uuml', 'Ý':'Yacute', 'Þ':'THORN', 'ß':'szlig', 'à':'agrave', 'á':'aacute', 'â':'acirc', 'ã':'atilde', 'ä':'auml', 'å':'aring', 'æ':'aelig', 'ç':'ccedil', 'è':'egrave', 'é':'eacute', 'ê':'ecirc', 'ë':'euml', 'ì':'igrave', 'í':'iacute', 'î':'icirc', 'ï':'iuml', 'ð':'eth', 'ñ':'ntilde', 'ò':'ograve', 'ó':'oacute', 'ô':'ocirc', 'õ':'otilde', 'ö':'ouml', 'ø':'oslash', 'ù':'ugrave', 'ú':'uacute', 'û':'ucirc', 'ü':'uuml', 'ý':'yacute', 'þ':'thorn', 'ÿ':'yuml', 'Œ':'OElig', 'œ':'oelig', 'Š':'Scaron', 'š':'scaron', 'Ÿ':'Yuml' } ; for ( e in oEntities ) { FCKXHtmlEntities.Entities[ e ] = oEntities[ e ] ; sChars += e ; } oEntities = null ; } // Include Greek Letters Entities. if ( FCKConfig.IncludeGreekEntities ) { oEntities = { 'Α':'Alpha', 'Β':'Beta', 'Γ':'Gamma', 'Δ':'Delta', 'Ε':'Epsilon', 'Ζ':'Zeta', 'Η':'Eta', 'Θ':'Theta', 'Ι':'Iota', 'Κ':'Kappa', 'Λ':'Lambda', 'Μ':'Mu', 'Ν':'Nu', 'Ξ':'Xi', 'Ο':'Omicron', 'Π':'Pi', 'Ρ':'Rho', 'Σ':'Sigma', 'Τ':'Tau', 'Υ':'Upsilon', 'Φ':'Phi', 'Χ':'Chi', 'Ψ':'Psi', 'Ω':'Omega', 'α':'alpha', 'β':'beta', 'γ':'gamma', 'δ':'delta', 'ε':'epsilon', 'ζ':'zeta', 'η':'eta', 'θ':'theta', 'ι':'iota', 'κ':'kappa', 'λ':'lambda', 'μ':'mu', 'ν':'nu', 'ξ':'xi', 'ο':'omicron', 'π':'pi', 'ρ':'rho', 'ς':'sigmaf', 'σ':'sigma', 'τ':'tau', 'υ':'upsilon', 'φ':'phi', 'χ':'chi', 'ψ':'psi', 'ω':'omega', '\u03d1':'thetasym', '\u03d2':'upsih', '\u03d6':'piv' } ; for ( e in oEntities ) { FCKXHtmlEntities.Entities[ e ] = oEntities[ e ] ; sChars += e ; } oEntities = null ; } } else { FCKXHtmlEntities.Entities = { '>':'gt' // Opera and Safari don't encode it in their implementation } ; sChars = '>'; // Even if we are not processing the entities, we must render the // correctly. As we don't want HTML entities, let's use its numeric // representation ( ). sChars += ' ' ; } // Create the Regex used to find entities in the text. var sRegexPattern = '[' + sChars + ']' ; if ( FCKConfig.ProcessNumericEntities ) sRegexPattern = '[^ -~]|' + sRegexPattern ; var sAdditional = FCKConfig.AdditionalNumericEntities ; if ( sAdditional && sAdditional.length > 0 ) sRegexPattern += '|' + FCKConfig.AdditionalNumericEntities ; FCKXHtmlEntities.EntitiesRegex = new RegExp( sRegexPattern, 'g' ) ; }