happy-dom
Version:
Happy DOM is a JavaScript implementation of a web browser without its graphical user interface. It includes many web standards from WHATWG DOM and HTML.
143 lines • 3.97 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Utility for encoding.
*/
class XMLEncodeUtility {
/**
* Encodes attribute value.
*
* @param value Value.
* @returns Escaped value.
*/
static encodeXMLAttributeValue(value) {
if (value === null) {
return '';
}
return value
.replace(/&/gu, '&')
.replace(/"/gu, '"')
.replace(/</gu, '<')
.replace(/>/gu, '>')
.replace(/\t/gu, '	')
.replace(/\n/gu, '
')
.replace(/\r/gu, '
');
}
/**
* Decodes attribute value.
*
* @param value Value.
* @returns Decoded value.
*/
static decodeXMLAttributeValue(value) {
if (value === null) {
return '';
}
return value
.replace(/"/gu, '"')
.replace(/</gu, '<')
.replace(/>/gu, '>')
.replace(/	/gu, '\t')
.replace(/
/gu, '\n')
.replace(/
/gu, '\r')
.replace(/&/gu, '&');
}
/**
* Encodes attribute value.
*
* @param value Value.
* @returns Escaped value.
*/
static encodeHTMLAttributeValue(value) {
if (value === null) {
return '';
}
return value.replace(/&/gu, '&').replace(/"/gu, '"');
}
/**
* Decodes attribute value.
*
* @param value Value.
* @returns Decoded value.
*/
static decodeHTMLAttributeValue(value) {
if (value === null) {
return '';
}
return value.replace(/"/gu, '"').replace(/&/gu, '&');
}
/**
* Encodes text content.
*
* @param text Value.
* @returns Escaped value.
*/
static encodeTextContent(text) {
if (text === null) {
return '';
}
return text
.replace(/&/gu, '&')
.replace(/\xA0/gu, ' ')
.replace(/</gu, '<')
.replace(/>/gu, '>');
}
/**
* Decodes text content.
*
* @param text Value.
* @returns Decoded value.
*/
static decodeTextContent(text) {
if (text === null) {
return '';
}
return text
.replace(/ /gu, String.fromCharCode(160))
.replace(/</gu, '<')
.replace(/>/gu, '>')
.replace(/&/gu, '&');
}
/**
* Decodes HTML entities.
*
* @param value Value.
* @returns Decoded value.
*/
static decodeHTMLEntities(value) {
if (value === null) {
return '';
}
return value
.replace(/</gu, '<')
.replace(/>/gu, '>')
.replace(/ /gu, String.fromCharCode(160))
.replace(/"/gu, '"')
.replace(/'/gu, "'")
.replace(/&#(\d+);/gu, (_match, dec) => String.fromCharCode(parseInt(dec, 10)))
.replace(/&#x([A-Fa-f\d]+);/gu, (_match, hex) => String.fromCharCode(parseInt(hex, 16)))
.replace(/&/gu, '&');
}
/**
* Decodes XML entities.
*
* @param value Value.
* @returns Decoded value.
*/
static decodeXMLEntities(value) {
if (value === null) {
return '';
}
return (value
.replace(/</gu, '<')
.replace(/>/gu, '>')
// " " Should not be supported in XML.
.replace(/"/gu, '"')
.replace(/'/gu, "'")
.replace(/&#(\d+);/gu, (_match, dec) => String.fromCharCode(parseInt(dec, 10)))
.replace(/&#x([A-Fa-f\d]+);/gu, (_match, hex) => String.fromCharCode(parseInt(hex, 16)))
.replace(/&/gu, '&'));
}
}
exports.default = XMLEncodeUtility;
//# sourceMappingURL=XMLEncodeUtility.cjs.map
;