| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 | 
							- var ALPHA_INDEX = {
 
-     '<': '<',
 
-     '>': '>',
 
-     '"': '"',
 
-     '&apos': '\'',
 
-     '&': '&',
 
-     '<': '<',
 
-     '>': '>',
 
-     '"': '"',
 
-     ''': '\'',
 
-     '&': '&'
 
- };
 
- var CHAR_INDEX = {
 
-     60: 'lt',
 
-     62: 'gt',
 
-     34: 'quot',
 
-     39: 'apos',
 
-     38: 'amp'
 
- };
 
- var CHAR_S_INDEX = {
 
-     '<': '<',
 
-     '>': '>',
 
-     '"': '"',
 
-     '\'': ''',
 
-     '&': '&'
 
- };
 
- /**
 
-  * @constructor
 
-  */
 
- function XmlEntities() {}
 
- /**
 
-  * @param {String} str
 
-  * @returns {String}
 
-  */
 
- XmlEntities.prototype.encode = function(str) {
 
-     if (str.length === 0) {
 
-         return '';
 
-     }
 
-     return str.replace(/<|>|"|'|&/g, function(s) {
 
-         return CHAR_S_INDEX[s];
 
-     });
 
- };
 
- /**
 
-  * @param {String} str
 
-  * @returns {String}
 
-  */
 
-  XmlEntities.encode = function(str) {
 
-     return new XmlEntities().encode(str);
 
-  };
 
- /**
 
-  * @param {String} str
 
-  * @returns {String}
 
-  */
 
- XmlEntities.prototype.decode = function(str) {
 
-     if (str.length === 0) {
 
-         return '';
 
-     }
 
-     return str.replace(/&#?[0-9a-zA-Z]+;?/g, function(s) {
 
-         if (s.charAt(1) === '#') {
 
-             var code = s.charAt(2).toLowerCase() === 'x' ?
 
-                 parseInt(s.substr(3), 16) :
 
-                 parseInt(s.substr(2));
 
-             if (isNaN(code) || code < -32768 || code > 65535) {
 
-                 return '';
 
-             }
 
-             return String.fromCharCode(code);
 
-         }
 
-         return ALPHA_INDEX[s] || s;
 
-     });
 
- };
 
- /**
 
-  * @param {String} str
 
-  * @returns {String}
 
-  */
 
-  XmlEntities.decode = function(str) {
 
-     return new XmlEntities().decode(str);
 
-  };
 
- /**
 
-  * @param {String} str
 
-  * @returns {String}
 
-  */
 
- XmlEntities.prototype.encodeNonUTF = function(str) {
 
-     var strLength = str.length;
 
-     if (strLength === 0) {
 
-         return '';
 
-     }
 
-     var result = '';
 
-     var i = 0;
 
-     while (i < strLength) {
 
-         var c = str.charCodeAt(i);
 
-         var alpha = CHAR_INDEX[c];
 
-         if (alpha) {
 
-             result += "&" + alpha + ";";
 
-             i++;
 
-             continue;
 
-         }
 
-         if (c < 32 || c > 126) {
 
-             result += '&#' + c + ';';
 
-         } else {
 
-             result += str.charAt(i);
 
-         }
 
-         i++;
 
-     }
 
-     return result;
 
- };
 
- /**
 
-  * @param {String} str
 
-  * @returns {String}
 
-  */
 
-  XmlEntities.encodeNonUTF = function(str) {
 
-     return new XmlEntities().encodeNonUTF(str);
 
-  };
 
- /**
 
-  * @param {String} str
 
-  * @returns {String}
 
-  */
 
- XmlEntities.prototype.encodeNonASCII = function(str) {
 
-     var strLenght = str.length;
 
-     if (strLenght === 0) {
 
-         return '';
 
-     }
 
-     var result = '';
 
-     var i = 0;
 
-     while (i < strLenght) {
 
-         var c = str.charCodeAt(i);
 
-         if (c <= 255) {
 
-             result += str[i++];
 
-             continue;
 
-         }
 
-         result += '&#' + c + ';';
 
-         i++;
 
-     }
 
-     return result;
 
- };
 
- /**
 
-  * @param {String} str
 
-  * @returns {String}
 
-  */
 
-  XmlEntities.encodeNonASCII = function(str) {
 
-     return new XmlEntities().encodeNonASCII(str);
 
-  };
 
- module.exports = XmlEntities;
 
 
  |