You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							132 lines
						
					
					
						
							3.7 KiB
						
					
					
				
			
		
		
	
	
							132 lines
						
					
					
						
							3.7 KiB
						
					
					
				"use strict"; | 
						|
Object.defineProperty(exports, "__esModule", { value: true }); | 
						|
var surrogate_pairs_1 = require("./surrogate-pairs"); | 
						|
var ALPHA_INDEX = { | 
						|
    '<': '<', | 
						|
    '>': '>', | 
						|
    '"': '"', | 
						|
    '&apos': '\'', | 
						|
    '&': '&', | 
						|
    '<': '<', | 
						|
    '>': '>', | 
						|
    '"': '"', | 
						|
    ''': '\'', | 
						|
    '&': '&' | 
						|
}; | 
						|
var CHAR_INDEX = { | 
						|
    60: 'lt', | 
						|
    62: 'gt', | 
						|
    34: 'quot', | 
						|
    39: 'apos', | 
						|
    38: 'amp' | 
						|
}; | 
						|
var CHAR_S_INDEX = { | 
						|
    '<': '<', | 
						|
    '>': '>', | 
						|
    '"': '"', | 
						|
    '\'': ''', | 
						|
    '&': '&' | 
						|
}; | 
						|
var XmlEntities = /** @class */ (function () { | 
						|
    function XmlEntities() { | 
						|
    } | 
						|
    XmlEntities.prototype.encode = function (str) { | 
						|
        if (!str || !str.length) { | 
						|
            return ''; | 
						|
        } | 
						|
        return str.replace(/[<>"'&]/g, function (s) { | 
						|
            return CHAR_S_INDEX[s]; | 
						|
        }); | 
						|
    }; | 
						|
    XmlEntities.encode = function (str) { | 
						|
        return new XmlEntities().encode(str); | 
						|
    }; | 
						|
    XmlEntities.prototype.decode = function (str) { | 
						|
        if (!str || !str.length) { | 
						|
            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) { | 
						|
                    if (code <= 65535) { | 
						|
                        return String.fromCharCode(code); | 
						|
                    } | 
						|
                    else { | 
						|
                        return surrogate_pairs_1.fromCodePoint(code); | 
						|
                    } | 
						|
                } | 
						|
                return ''; | 
						|
            } | 
						|
            return ALPHA_INDEX[s] || s; | 
						|
        }); | 
						|
    }; | 
						|
    XmlEntities.decode = function (str) { | 
						|
        return new XmlEntities().decode(str); | 
						|
    }; | 
						|
    XmlEntities.prototype.encodeNonUTF = function (str) { | 
						|
        if (!str || !str.length) { | 
						|
            return ''; | 
						|
        } | 
						|
        var strLength = str.length; | 
						|
        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) { | 
						|
                if (c >= surrogate_pairs_1.highSurrogateFrom && c <= surrogate_pairs_1.highSurrogateTo) { | 
						|
                    result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';'; | 
						|
                    i++; | 
						|
                } | 
						|
                else { | 
						|
                    result += '&#' + c + ';'; | 
						|
                } | 
						|
            } | 
						|
            else { | 
						|
                result += str.charAt(i); | 
						|
            } | 
						|
            i++; | 
						|
        } | 
						|
        return result; | 
						|
    }; | 
						|
    XmlEntities.encodeNonUTF = function (str) { | 
						|
        return new XmlEntities().encodeNonUTF(str); | 
						|
    }; | 
						|
    XmlEntities.prototype.encodeNonASCII = function (str) { | 
						|
        if (!str || !str.length) { | 
						|
            return ''; | 
						|
        } | 
						|
        var strLength = str.length; | 
						|
        var result = ''; | 
						|
        var i = 0; | 
						|
        while (i < strLength) { | 
						|
            var c = str.charCodeAt(i); | 
						|
            if (c <= 255) { | 
						|
                result += str[i++]; | 
						|
                continue; | 
						|
            } | 
						|
            if (c >= surrogate_pairs_1.highSurrogateFrom && c <= surrogate_pairs_1.highSurrogateTo) { | 
						|
                result += '&#' + surrogate_pairs_1.getCodePoint(str, i) + ';'; | 
						|
                i++; | 
						|
            } | 
						|
            else { | 
						|
                result += '&#' + c + ';'; | 
						|
            } | 
						|
            i++; | 
						|
        } | 
						|
        return result; | 
						|
    }; | 
						|
    XmlEntities.encodeNonASCII = function (str) { | 
						|
        return new XmlEntities().encodeNonASCII(str); | 
						|
    }; | 
						|
    return XmlEntities; | 
						|
}()); | 
						|
exports.XmlEntities = XmlEntities;
 | 
						|
 |