promisified-properties
Version:
Handle .properties file via promisified and typed API
52 lines (51 loc) • 1.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.escapeKey = exports.escape = void 0;
/**
* Escape the given string, based on the spec [defined by Java](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Properties.html).
*
* @param s - string to escape
* @returns Escaped string
*/
function escape(s) {
if (s.length === 0) {
return "";
}
const iterator = s[Symbol.iterator]();
let result = "";
let char = iterator.next();
do {
const code = char.value;
if (code === "\r") {
result += "\\r";
}
else if (code === "\n") {
result += "\\n";
}
else if (code.charCodeAt(0) < 256) {
result += code;
}
else {
for (var i = 0; i < code.length; ++i) {
let escapedCode = code.charCodeAt(i).toString(16);
while (escapedCode.length < 4) {
escapedCode = "0" + code;
}
result += `\\u${escapedCode}`;
}
}
char = iterator.next();
} while (!char.done);
return result;
}
exports.escape = escape;
/**
* Escape the given string as property key, based on the spec [defined by Java](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Properties.html).
*
* @param s - string to escape
* @returns Escaped string
*/
function escapeKey(key) {
return key.replace(/:/g, "\\:").replace(/=/g, "\\=");
}
exports.escapeKey = escapeKey;