1 var charByEntityName
= {
22 'macr': '¯', // http://www.w3.org/TR/html4/sgml/entities.html
23 'strns': '¯', // http://www.w3.org/TR/html5/named-character-references.html
25 'plusmn': '±', // http://www.w3.org/TR/html4/sgml/entities.html
26 'pm': '±', // http://www.w3.org/TR/html5/named-character-references.html
38 'half': '½', // http://www.w3.org/TR/html4/sgml/entities.html
39 'frac12': '½', // http://www.w3.org/TR/html5/named-character-references.html
47 'Aring': 'Å', // http://www.w3.org/TR/html4/sgml/entities.html
48 'angst': 'Å', // http://www.w3.org/TR/html5/named-character-references.html
262 'Omega': 'Ω', // http://www.w3.org/TR/html4/sgml/entities.html
263 'ohm': 'Ω', // http://www.w3.org/TR/html5/named-character-references.html
281 'sigmaf': 'ς', // http://www.w3.org/TR/html4/sgml/entities.html
282 'varsigma': 'ς', // http://www.w3.org/TR/html5/named-character-references.html
290 'thetasym': 'ϑ', // http://www.w3.org/TR/html4/sgml/entities.html
291 'vartheta': 'ϑ', // http://www.w3.org/TR/html5/named-character-references.html
294 'piv': 'ϖ', // http://www.w3.org/TR/html4/sgml/entities.html
295 'varpi': 'ϖ', // http://www.w3.org/TR/html5/named-character-references.html
402 'ZeroWidthSpace': '',
413 'rsquo': '’', // http://www.w3.org/TR/html4/sgml/entities.html
414 'rsquor': '’', // http://www.w3.org/TR/html5/named-character-references.html
417 'rdquo': '”', // http://www.w3.org/TR/html4/sgml/entities.html
418 'rdquor': '”', // http://www.w3.org/TR/html5/named-character-references.html
419 'ldquo': '“', // http://www.w3.org/TR/html4/sgml/entities.html
420 'ldquor': '„', // http://www.w3.org/TR/html5/named-character-references.html
422 'Dagger': '‡', // http://www.w3.org/TR/html4/sgml/entities.html
423 'ddagger': '‡', // http://www.w3.org/TR/html5/named-character-references.html
424 'bull': '•', // http://www.w3.org/TR/html4/sgml/entities.html
425 'bullet': '•', // http://www.w3.org/TR/html5/named-character-references.html
427 'hellip': '…', // http://www.w3.org/TR/html4/sgml/entities.html
428 'mldr': '…', // http://www.w3.org/TR/html5/named-character-references.html
453 'Poincareplane': 'ℌ',
458 'image': 'ℑ', // http://www.w3.org/TR/html4/sgml/entities.html
459 'imagpart': 'ℑ', // http://www.w3.org/TR/html5/named-character-references.html
465 'weierp': '℘', // http://www.w3.org/TR/html4/sgml/entities.html
466 'wp': '℘', // http://www.w3.org/TR/html5/named-character-references.html
470 'real': 'ℜ', // http://www.w3.org/TR/html4/sgml/entities.html
471 'realpart': 'ℜ', // http://www.w3.org/TR/html5/named-character-references.html
486 'alefsym': 'ℵ', // http://www.w3.org/TR/html4/sgml/entities.html
487 'aleph': 'ℵ', // http://www.w3.org/TR/html5/named-character-references.html
507 'larr': '←', // http://www.w3.org/TR/html4/sgml/entities.html
508 'slarr': '←', // http://www.w3.org/TR/html5/named-character-references.html
509 'uarr': '↑', // http://www.w3.org/TR/html4/sgml/entities.html
510 'uparrow': '↑', // http://www.w3.org/TR/html5/named-character-references.html
511 'rarr': '→', // http://www.w3.org/TR/html4/sgml/entities.html
512 'srarr': '→', // http://www.w3.org/TR/html5/named-character-references.html
513 'darr': '↓', // http://www.w3.org/TR/html4/sgml/entities.html
514 'downarrow': '↓', // http://www.w3.org/TR/html5/named-character-references.html
515 'harr': '↔', // http://www.w3.org/TR/html4/sgml/entities.html
516 'leftrightarrow': '↔', // http://www.w3.org/TR/html5/named-character-references.html
524 'rightsquigarrow': '↝',
525 'twoheadleftarrow': '↞',
527 'twoheadrightarrow': '↠',
529 'leftarrowtail': '↢',
530 'rightarrowtail': '↣',
537 'looparrowleft': '↫',
539 'leftrightsquigarrow': '↭',
540 'nleftrightarrow': '↮',
546 'curvearrowleft': '↶',
547 'curvearrowright': '↷',
552 'upharpoonright': '↾',
553 'upharpoonleft': '↿',
554 'rightharpoonup': '⇀',
555 'rightharpoondown': '⇁',
556 'downharpoonright': '⇂',
557 'downharpoonleft': '⇃',
564 'downdownarrows': '⇊',
574 'hArr': '⇔', // http://www.w3.org/TR/html4/sgml/entities.html
575 'iff': '⇔', // http://www.w3.org/TR/html5/named-character-references.html
595 'empty': '∅', // http://www.w3.org/TR/html4/sgml/entities.html
596 'varnothing': '∅', // http://www.w3.org/TR/html5/named-character-references.html
598 'isin': '∈', // http://www.w3.org/TR/html4/sgml/entities.html
599 'isinv': '∈', // http://www.w3.org/TR/html5/named-character-references.html
600 'notin': '∉', // http://www.w3.org/TR/html4/sgml/entities.html
601 'notinva': '∉', // http://www.w3.org/TR/html5/named-character-references.html
602 'ni': '∋', // http://www.w3.org/TR/html4/sgml/entities.html
603 'niv': '∋', // http://www.w3.org/TR/html5/named-character-references.html
615 'prop': '∝', // http://www.w3.org/TR/html4/sgml/entities.html
616 'vprop': '∝', // http://www.w3.org/TR/html5/named-character-references.html
619 'ang': '∠', // http://www.w3.org/TR/html4/sgml/entities.html
620 'angle': '∠', // http://www.w3.org/TR/html5/named-character-references.html
621 'measuredangle': '∡',
627 'and': '∧', // http://www.w3.org/TR/html4/sgml/entities.html
628 'wedge': '∧', // http://www.w3.org/TR/html5/named-character-references.html
629 'or': '∨', // http://www.w3.org/TR/html4/sgml/entities.html
630 'vee': '∨', // http://www.w3.org/TR/html5/named-character-references.html
637 'DoubleContourIntegral': '∯',
642 'there4': '∴', // http://www.w3.org/TR/html4/sgml/entities.html
643 'therefore': '∴', // http://www.w3.org/TR/html5/named-character-references.html
650 'sim': '∼', // http://www.w3.org/TR/html4/sgml/entities.html
651 'thksim': '∼', // http://www.w3.org/TR/html5/named-character-references.html
663 'asymp': '≈', // http://www.w3.org/TR/html4/sgml/entities.html
664 'thkap': '≈', // http://www.w3.org/TR/html5/named-character-references.html
674 'fallingdotseq': '≒',
687 'le': '≤', // http://www.w3.org/TR/html4/sgml/entities.html
688 'leq': '≤', // http://www.w3.org/TR/html5/named-character-references.html
689 'ge': '≥', // http://www.w3.org/TR/html4/sgml/entities.html
690 'geq': '≥', // http://www.w3.org/TR/html5/named-character-references.html
719 'sub': '⊂', // http://www.w3.org/TR/html4/sgml/entities.html
720 'subset': '⊂', // http://www.w3.org/TR/html5/named-character-references.html
721 'sup': '⊃', // http://www.w3.org/TR/html4/sgml/entities.html
722 'supset': '⊃', // http://www.w3.org/TR/html5/named-character-references.html
725 'sube': '⊆', // http://www.w3.org/TR/html4/sgml/entities.html
726 'subseteq': '⊆', // http://www.w3.org/TR/html5/named-character-references.html
727 'supe': '⊇', // http://www.w3.org/TR/html4/sgml/entities.html
728 'supseteq': '⊇', // http://www.w3.org/TR/html5/named-character-references.html
769 'trianglelefteq': '⊴',
770 'trianglerighteq': '⊵',
818 'ntriangleleft': '⋪',
819 'ntriangleright': '⋫',
820 'ntrianglelefteq': '⋬',
821 'ntrianglerighteq': '⋭',
839 'doublebarwedge': '⌆',
859 'lang': '〈', // http://www.w3.org/TR/html4/sgml/entities.html
860 'rang': '〉', // http://www.w3.org/TR/html4/sgml/entities.html
872 'OverParenthesis': '⏜',
873 'UnderParenthesis': '⏝',
928 'EmptyVerySmallSquare': '▫',
936 'triangleright': '▹',
942 'loz': '◊', // http://www.w3.org/TR/html4/sgml/entities.html
943 'lozenge': '◊', // http://www.w3.org/TR/html5/named-character-references.html
950 'EmptySmallSquare': '◻',
951 'FilledSmallSquare': '◼',
957 'spades': '♠', // http://www.w3.org/TR/html4/sgml/entities.html
958 'spadesuit': '♠', // http://www.w3.org/TR/html5/named-character-references.html
959 'clubs': '♣', // http://www.w3.org/TR/html4/sgml/entities.html
960 'clubsuit': '♣', // http://www.w3.org/TR/html5/named-character-references.html
961 'hearts': '♥', // http://www.w3.org/TR/html4/sgml/entities.html
962 'heartsuit': '♥', // http://www.w3.org/TR/html5/named-character-references.html
972 'VerticalSeparator': '❘',
1004 'DownArrowBar': '⤓',
1035 'LeftRightVector': '⥎',
1036 'RightUpDownVector': '⥏',
1037 'DownLeftRightVector': '⥐',
1038 'LeftUpDownVector': '⥑',
1039 'LeftVectorBar': '⥒',
1040 'RightVectorBar': '⥓',
1041 'RightUpVectorBar': '⥔',
1042 'RightDownVectorBar': '⥕',
1043 'DownLeftVectorBar': '⥖',
1044 'DownRightVectorBar': '⥗',
1045 'LeftUpVectorBar': '⥘',
1046 'LeftDownVectorBar': '⥙',
1047 'LeftTeeVector': '⥚',
1048 'RightTeeVector': '⥛',
1049 'RightUpTeeVector': '⥜',
1050 'RightDownTeeVector': '⥝',
1051 'DownLeftTeeVector': '⥞',
1052 'DownRightTeeVector': '⥟',
1053 'LeftUpTeeVector': '⥠',
1054 'LeftDownTeeVector': '⥡',
1069 'RoundImplies': '⥰',
1134 'LeftTriangleBar': '⧏',
1135 'RightTriangleBar': '⧐',
1261 'GreaterGreater': '⪢',
1312 'DoubleLeftTee': '⫤',
1467 var specialCharEntities
= {
1475 var entityRegExp
= /&(?:#([0-9]+)|#x([0-9a-f]+)|([a-z0-9]+));/gi;
1476 var attributeModeSpecialCharRegExp
= /["&<>\xA0]/g;
1477 var nonAttributeModeSpecialCharRegExp
= /[&<>\xA0]/g;
1479 exports
.HTMLDecode
= function decode(s
) {
1481 return s
.replace(entityRegExp
, function ($0, decimalStr
, hexStr
, entityName
) {
1483 return String
.fromCharCode(parseInt(decimalStr
, 10));
1484 } else if (hexStr
) {
1485 return String
.fromCharCode(parseInt(hexStr
, 16));
1487 // Fall back to the original string if we don't know the entity, as per browser behavior:
1488 return charByEntityName
[entityName
] || $0;
1493 function specialCharToEntity(s
) {
1494 var entity
= specialCharEntities
[s
];
1495 return entity
? entity
: s
;
1498 exports
.HTMLEncode
= function encode(s
, attributeMode
) {
1500 if (!s
.replace
) return s
;
1502 return s
.replace(attributeModeSpecialCharRegExp
, specialCharToEntity
);
1504 return s
.replace(nonAttributeModeSpecialCharRegExp
, specialCharToEntity
);