UNPKG

@technobuddha/library

Version:
92 lines (91 loc) 2.84 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.escapePython = void 0; var build_1 = __importDefault(require("../build")); var _escape_1 = require("../_escape"); /** * Escape a string for use in Python * * @param input The string to escape * @returns the string escapes for use in python */ function escapePython(input) { var output = []; for (var i = 0; i < input.length; ++i) { var u0 = input.codePointAt(i); var u1 = input.codePointAt(i + 1); if (u0 < 0x00000020) { switch (u0) { case 0x00000000: { output.push(_escape_1.oct(u1) ? '\\000' : '\\0'); break; } case 0x00000007: { output.push('\\a'); break; } case 0x00000008: { output.push('\\b'); break; } case 0x00000009: { output.push('\\t'); break; } case 0x0000000a: { output.push('\\n'); break; } case 0x0000000b: { output.push('\\v'); break; } case 0x0000000c: { output.push('\\f'); break; } case 0x0000000d: { output.push('\\r'); break; } default: output.push(_escape_1.hex(u1) ? _escape_1.u4(u0) : _escape_1.x2(u0)); } } else if (u0 < 0x0000007f) { switch (u0) { case 0x00000022: { output.push('\\"'); break; } case 0x00000027: { output.push('\\\''); break; } case 0x0000005c: { output.push('\\\\'); break; } default: output.push(String.fromCharCode(u0)); } } else if (u0 < 0x000000a1) { output.push(_escape_1.hex(u1) ? _escape_1.u4(u0) : _escape_1.x2(u0)); } else if (u0 < 0x00000100) { output.push(String.fromCharCode(u0)); } else if (u0 < 0x00010000) { output.push(_escape_1.u4(u0)); } else { ++i; output.push(_escape_1.U8(u0)); } } return build_1.default(output); } exports.escapePython = escapePython; exports.default = escapePython;