mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 07:14:47 -05:00
39 lines
1.2 KiB
JavaScript
39 lines
1.2 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.escapeToBuffer = void 0;
|
||
|
// The `escapeToBuffer` implementation is based on code from the MIT licensed `react-dom` package.
|
||
|
// https://github.com/facebook/react/blob/main/packages/react-dom/src/server/escapeTextForBrowser.js
|
||
|
const escapeRe = /[&<>"]/;
|
||
|
const escapeToBuffer = (str, buffer) => {
|
||
|
const match = str.search(escapeRe);
|
||
|
if (match === -1) {
|
||
|
buffer[0] += str;
|
||
|
return;
|
||
|
}
|
||
|
let escape;
|
||
|
let index;
|
||
|
let lastIndex = 0;
|
||
|
for (index = match; index < str.length; index++) {
|
||
|
switch (str.charCodeAt(index)) {
|
||
|
case 34: // "
|
||
|
escape = '"';
|
||
|
break;
|
||
|
case 38: // &
|
||
|
escape = '&';
|
||
|
break;
|
||
|
case 60: // <
|
||
|
escape = '<';
|
||
|
break;
|
||
|
case 62: // >
|
||
|
escape = '>';
|
||
|
break;
|
||
|
default:
|
||
|
continue;
|
||
|
}
|
||
|
buffer[0] += str.substring(lastIndex, index) + escape;
|
||
|
lastIndex = index + 1;
|
||
|
}
|
||
|
buffer[0] += str.substring(lastIndex, index);
|
||
|
};
|
||
|
exports.escapeToBuffer = escapeToBuffer;
|