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.
35 lines
936 B
35 lines
936 B
3 years ago
|
/**
|
||
|
* @fileoverview XML character escaper
|
||
|
* @author George Chung
|
||
|
*/
|
||
|
"use strict";
|
||
|
|
||
|
//------------------------------------------------------------------------------
|
||
|
// Public Interface
|
||
|
//------------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Returns the escaped value for a character
|
||
|
* @param {string} s string to examine
|
||
|
* @returns {string} severity level
|
||
|
* @private
|
||
|
*/
|
||
|
module.exports = function(s) {
|
||
|
return (`${s}`).replace(/[<>&"'\x00-\x1F\x7F\u0080-\uFFFF]/gu, c => { // eslint-disable-line no-control-regex
|
||
|
switch (c) {
|
||
|
case "<":
|
||
|
return "<";
|
||
|
case ">":
|
||
|
return ">";
|
||
|
case "&":
|
||
|
return "&";
|
||
|
case "\"":
|
||
|
return """;
|
||
|
case "'":
|
||
|
return "'";
|
||
|
default:
|
||
|
return `&#${c.charCodeAt(0)};`;
|
||
|
}
|
||
|
});
|
||
|
};
|