jsii-rosetta
Version:
[](https://cdk.dev) [;
exports.makeXmlEscaper = makeXmlEscaper;
exports.makeJavaEscaper = makeJavaEscaper;
/**
* Make a generic XML escaper
*/
function makeXmlEscaper() {
const attr = [...TEXT, ...ATTR_ADDL];
return {
text: (x) => escapeText(TEXT, x),
attribute: (x) => escapeText(attr, x),
text2attr: (x) => escapeText(ATTR_ADDL, x),
};
}
/**
* Make a Java specific escaper
*
* This one also escapes '@' because that triggers parsing of comment directives
* in Java.
*/
function makeJavaEscaper() {
const javaText = [...TEXT, [new RegExp('@', 'g'), '@']];
const javaAttr = [...javaText, ...ATTR_ADDL];
return {
text: (x) => escapeText(javaText, x),
attribute: (x) => escapeText(javaAttr, x),
text2attr: (x) => escapeText(ATTR_ADDL, x),
};
}
const TEXT = [
[new RegExp('&', 'g'), '&'],
[new RegExp('<', 'g'), '<'],
[new RegExp('>', 'g'), '>'],
];
// Additional escapes (in addition to the text escapes) which need to be escaped inside attributes.
const ATTR_ADDL = [
[new RegExp('"', 'g'), '"'],
[new RegExp("'", 'g'), '''],
];
function escapeText(set, what) {
if (!what) {
return '';
}
for (const [re, repl] of set) {
what = what.replace(re, repl);
}
return what;
}
//# sourceMappingURL=escapes.js.map