codigo0/node_modules/happy-dom/lib/utilities/XMLEncodeUtility.js
planetazuzu 5d7a6500fe refactor: Fase 1 - Clean Architecture, refactorización modular y eliminación de duplicidades
-  Ticket 1.1: Estructura Clean Architecture en backend
-  Ticket 1.2: Schemas Zod compartidos
-  Ticket 1.3: Refactorización drugs.ts (1362 → 8 archivos modulares)
-  Ticket 1.4: Refactorización procedures.ts (3583 → 6 archivos modulares)
-  Ticket 1.5: Eliminación de duplicidades (~50 líneas)

Cambios principales:
- Creada estructura Clean Architecture en backend/src/
- Schemas Zod compartidos en backend/src/shared/schemas/
- Refactorización modular de drugs y procedures
- Utilidades genéricas en src/utils/ (filter, validation)
- Eliminados scripts obsoletos y documentación antigua
- Corregidos errores: QueryClient, import test-error-handling
- Build verificado y funcionando correctamente
2026-01-25 21:09:47 +01:00

140 lines
3.8 KiB
JavaScript

/**
* Utility for encoding.
*/
export default 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, '&lt;')
.replace(/>/gu, '&gt;')
.replace(/\t/gu, '&#x9;')
.replace(/\n/gu, '&#xA;')
.replace(/\r/gu, '&#xD;');
}
/**
* Decodes attribute value.
*
* @param value Value.
* @returns Decoded value.
*/
static decodeXMLAttributeValue(value) {
if (value === null) {
return '';
}
return value
.replace(/&quot;/gu, '"')
.replace(/&lt;/gu, '<')
.replace(/&gt;/gu, '>')
.replace(/&#x9;/gu, '\t')
.replace(/&#xA;/gu, '\n')
.replace(/&#xD;/gu, '\r')
.replace(/&amp;/gu, '&');
}
/**
* Encodes attribute value.
*
* @param value Value.
* @returns Escaped value.
*/
static encodeHTMLAttributeValue(value) {
if (value === null) {
return '';
}
return value.replace(/&/gu, '&amp;').replace(/"/gu, '&quot;');
}
/**
* Decodes attribute value.
*
* @param value Value.
* @returns Decoded value.
*/
static decodeHTMLAttributeValue(value) {
if (value === null) {
return '';
}
return value.replace(/&quot;/gu, '"').replace(/&amp;/gu, '&');
}
/**
* Encodes text content.
*
* @param text Value.
* @returns Escaped value.
*/
static encodeTextContent(text) {
if (text === null) {
return '';
}
return text
.replace(/&/gu, '&amp;')
.replace(/\xA0/gu, '&nbsp;')
.replace(/</gu, '&lt;')
.replace(/>/gu, '&gt;');
}
/**
* Decodes text content.
*
* @param text Value.
* @returns Decoded value.
*/
static decodeTextContent(text) {
if (text === null) {
return '';
}
return text
.replace(/&nbsp;/gu, String.fromCharCode(160))
.replace(/&lt;/gu, '<')
.replace(/&gt;/gu, '>')
.replace(/&amp;/gu, '&');
}
/**
* Decodes HTML entities.
*
* @param value Value.
* @returns Decoded value.
*/
static decodeHTMLEntities(value) {
if (value === null) {
return '';
}
return value
.replace(/&lt;/gu, '<')
.replace(/&gt;/gu, '>')
.replace(/&nbsp;/gu, String.fromCharCode(160))
.replace(/&quot;/gu, '"')
.replace(/&apos;/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(/&amp;/gu, '&');
}
/**
* Decodes XML entities.
*
* @param value Value.
* @returns Decoded value.
*/
static decodeXMLEntities(value) {
if (value === null) {
return '';
}
return (value
.replace(/&lt;/gu, '<')
.replace(/&gt;/gu, '>')
// "&nbsp;" Should not be supported in XML.
.replace(/&quot;/gu, '"')
.replace(/&apos;/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(/&amp;/gu, '&'));
}
}
//# sourceMappingURL=XMLEncodeUtility.js.map