@abaplint/runtime
Version:
Transpiler - Runtime
44 lines • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.escape = escape;
const types_1 = require("../types");
function escape(input) {
let val = typeof input.val === "string" ? input.val : input.val.get();
const format = typeof input.format === "number" ? input.format : input.format.get();
// todo, optimize/cache regexes
switch (format) {
case 1: // e_xml_attr
val = val.replace(/&/g, "&");
val = val.replace(/</g, "<");
val = val.replace(/"/g, """);
val = val.replace(/'/g, "'");
break;
case 4: // e_html_text
val = val.replace(/&/g, "&");
val = val.replace(/</g, "<");
val = val.replace(/>/g, ">");
break;
case 5: // e_html_attr
val = val.replace(/&/g, "&");
val = val.replace(/</g, "<");
val = val.replace(/>/g, ">");
val = val.replace(/"/g, """);
val = val.replace(/'/g, "'");
break;
case 12: // e_url
val = encodeURI(val);
break;
case 8: // e_html_js
val = val.replace(/"/g, "\\\"");
val = val.replace(/'/g, "\\'");
break;
case 24: // e_json_string
val = val.replace(/"/g, "\\\"");
val = val.replace(/\n/g, "\\n");
break;
default:
// todo, runtime error
}
return new types_1.String().set(val);
}
//# sourceMappingURL=escape.js.map