/**
* [js-htmlencode]{@link https://github.com/emn178/js-htmlencode}
*
* @version 0.3.0
* @author Chen, Yi-Cyuan [emn178@gmail.com]
* @copyright Chen, Yi-Cyuan 2014-2017
* @license MIT
*/
/*jslint bitwise: true */
(function () {
'use strict';
var root = typeof window === 'object' ? window : {};
var NODE_JS = !root.JS_HTMLENCODE_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;
if (NODE_JS) {
root = global;
}
var COMMON_JS = !root.JS_HTMLENCODE_NO_COMMON_JS && typeof module === 'object' && module.exports;
var AMD = typeof define === 'function' && define.amd;
var HTML_ENTITIES = {
' ' : '\u00A0',
'¡' : '\u00A1',
'¢' : '\u00A2',
'£' : '\u00A3',
'¤' : '\u00A4',
'¥' : '\u00A5',
'¦' : '\u00A6',
'§' : '\u00A7',
'¨' : '\u00A8',
'©' : '\u00A9',
'ª' : '\u00AA',
'«' : '\u00AB',
'¬' : '\u00AC',
'' : '\u00AD',
'®' : '\u00AE',
'¯' : '\u00AF',
'°' : '\u00B0',
'±' : '\u00B1',
'²' : '\u00B2',
'³' : '\u00B3',
'´' : '\u00B4',
'µ' : '\u00B5',
'¶' : '\u00B6',
'·' : '\u00B7',
'¸' : '\u00B8',
'¹' : '\u00B9',
'º' : '\u00BA',
'»' : '\u00BB',
'¼' : '\u00BC',
'½' : '\u00BD',
'¾' : '\u00BE',
'¿' : '\u00BF',
'À' : '\u00C0',
'Á' : '\u00C1',
'Â' : '\u00C2',
'Ã' : '\u00C3',
'Ä' : '\u00C4',
'Å' : '\u00C5',
'Æ' : '\u00C6',
'Ç' : '\u00C7',
'È' : '\u00C8',
'É' : '\u00C9',
'Ê' : '\u00CA',
'Ë' : '\u00CB',
'Ì' : '\u00CC',
'Í' : '\u00CD',
'Î' : '\u00CE',
'Ï' : '\u00CF',
'Ð' : '\u00D0',
'Ñ' : '\u00D1',
'Ò' : '\u00D2',
'Ó' : '\u00D3',
'Ô' : '\u00D4',
'Õ' : '\u00D5',
'Ö' : '\u00D6',
'×' : '\u00D7',
'Ø' : '\u00D8',
'Ù' : '\u00D9',
'Ú' : '\u00DA',
'Û' : '\u00DB',
'Ü' : '\u00DC',
'Ý' : '\u00DD',
'Þ' : '\u00DE',
'ß' : '\u00DF',
'à' : '\u00E0',
'á' : '\u00E1',
'â' : '\u00E2',
'ã' : '\u00E3',
'ä' : '\u00E4',
'å' : '\u00E5',
'æ' : '\u00E6',
'ç' : '\u00E7',
'è' : '\u00E8',
'é' : '\u00E9',
'ê' : '\u00EA',
'ë' : '\u00EB',
'ì' : '\u00EC',
'í' : '\u00ED',
'î' : '\u00EE',
'ï' : '\u00EF',
'ð' : '\u00F0',
'ñ' : '\u00F1',
'ò' : '\u00F2',
'ó' : '\u00F3',
'ô' : '\u00F4',
'õ' : '\u00F5',
'ö' : '\u00F6',
'÷' : '\u00F7',
'ø' : '\u00F8',
'ù' : '\u00F9',
'ú' : '\u00FA',
'û' : '\u00FB',
'ü' : '\u00FC',
'ý' : '\u00FD',
'þ' : '\u00FE',
'ÿ' : '\u00FF',
'"' : '\u0022',
'&' : '\u0026',
'<' : '\u003C',
'>' : '\u003E',
''' : '\u0027',
'Œ' : '\u0152',
'œ' : '\u0153',
'Š' : '\u0160',
'š' : '\u0161',
'Ÿ' : '\u0178',
'ˆ' : '\u02C6',
'˜' : '\u02DC',
' ' : '\u2002',
' ' : '\u2003',
' ' : '\u2009',
'' : '\u200C',
'' : '\u200D',
'' : '\u200E',
'' : '\u200F',
'–' : '\u2013',
'—' : '\u2014',
'‘' : '\u2018',
'’' : '\u2019',
'‚' : '\u201A',
'“' : '\u201C',
'”' : '\u201D',
'„' : '\u201E',
'†' : '\u2020',
'‡' : '\u2021',
'‰' : '\u2030',
'‹' : '\u2039',
'›' : '\u203A',
'€' : '\u20AC',
'ƒ' : '\u0192',
'Α' : '\u0391',
'Β' : '\u0392',
'Γ' : '\u0393',
'Δ' : '\u0394',
'Ε' : '\u0395',
'Ζ' : '\u0396',
'Η' : '\u0397',
'Θ' : '\u0398',
'Ι' : '\u0399',
'Κ' : '\u039A',
'Λ' : '\u039B',
'Μ' : '\u039C',
'Ν' : '\u039D',
'Ξ' : '\u039E',
'Ο' : '\u039F',
'Π' : '\u03A0',
'Ρ' : '\u03A1',
'Σ' : '\u03A3',
'Τ' : '\u03A4',
'Υ' : '\u03A5',
'Φ' : '\u03A6',
'Χ' : '\u03A7',
'Ψ' : '\u03A8',
'Ω' : '\u03A9',
'α' : '\u03B1',
'β' : '\u03B2',
'γ' : '\u03B3',
'δ' : '\u03B4',
'ε' : '\u03B5',
'ζ' : '\u03B6',
'η' : '\u03B7',
'θ' : '\u03B8',
'ι' : '\u03B9',
'κ' : '\u03BA',
'λ' : '\u03BB',
'μ' : '\u03BC',
'ν' : '\u03BD',
'ξ' : '\u03BE',
'ο' : '\u03BF',
'π' : '\u03C0',
'ρ' : '\u03C1',
'ς' : '\u03C2',
'σ' : '\u03C3',
'τ' : '\u03C4',
'υ' : '\u03C5',
'φ' : '\u03C6',
'χ' : '\u03C7',
'ψ' : '\u03C8',
'ω' : '\u03C9',
'ϑ' : '\u03D1',
'ϒ' : '\u03D2',
'ϖ' : '\u03D6',
'•' : '\u2022',
'…' : '\u2026',
'′' : '\u2032',
'″' : '\u2033',
'‾' : '\u203E',
'⁄' : '\u2044',
'℘' : '\u2118',
'ℑ' : '\u2111',
'ℜ' : '\u211C',
'™' : '\u2122',
'ℵ' : '\u2135',
'←' : '\u2190',
'↑' : '\u2191',
'→' : '\u2192',
'↓' : '\u2193',
'↔' : '\u2194',
'↵' : '\u21B5',
'⇐' : '\u21D0',
'⇑' : '\u21D1',
'⇒' : '\u21D2',
'⇓' : '\u21D3',
'⇔' : '\u21D4',
'∀' : '\u2200',
'∂' : '\u2202',
'∃' : '\u2203',
'∅' : '\u2205',
'∇' : '\u2207',
'∈' : '\u2208',
'∉' : '\u2209',
'∋' : '\u220B',
'∏' : '\u220F',
'∑' : '\u2211',
'−' : '\u2212',
'∗' : '\u2217',
'√' : '\u221A',
'∝' : '\u221D',
'∞' : '\u221E',
'∠' : '\u2220',
'∧' : '\u2227',
'∨' : '\u2228',
'∩' : '\u2229',
'∪' : '\u222A',
'∫' : '\u222B',
'∴' : '\u2234',
'∼' : '\u223C',
'≅' : '\u2245',
'≈' : '\u2248',
'≠' : '\u2260',
'≡' : '\u2261',
'≤' : '\u2264',
'≥' : '\u2265',
'⊂' : '\u2282',
'⊃' : '\u2283',
'⊄' : '\u2284',
'⊆' : '\u2286',
'⊇' : '\u2287',
'⊕' : '\u2295',
'⊗' : '\u2297',
'⊥' : '\u22A5',
'⋅' : '\u22C5',
'⌈' : '\u2308',
'⌉' : '\u2309',
'⌊' : '\u230A',
'⌋' : '\u230B',
'〈' : '\u2329',
'〉' : '\u232A',
'◊' : '\u25CA',
'♠' : '\u2660',
'♣' : '\u2663',
'♥' : '\u2665',
'♦' : '\u2666'
};
var decodeEntity = function (code) {
// name type
if (code.charAt(1) !== '#') {
return HTML_ENTITIES[code] || code;
}
var n, c = code.charAt(2);
// hex number
if (c === 'x' || c === 'X') {
c = code.substring(3, code.length - 1);
n = parseInt(c, 16);
} else {
c = code.substring(2, code.length - 1);
n = parseInt(c);
}
return isNaN(n) ? code : String.fromCharCode(n);
};
var htmlEncode = function (str) {
return str.replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''')
.replace(//g, '>');
};
var htmlDecode = function (str) {
return str.replace(/?\w+;/g, decodeEntity);
};
var exports = htmlEncode;
htmlEncode.htmlEncode = htmlEncode;
htmlEncode.htmlDecode = htmlDecode;
if (COMMON_JS) {
module.exports = exports;
} else {
root.htmlEncode = htmlEncode;
root.htmlDecode = htmlDecode;
if (AMD) {
define(function() {
return exports;
});
}
}
})();