antlr-ng
Version:
Next generation ANTLR Tool
43 lines (42 loc) • 1.31 kB
JavaScript
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
import { Character } from "../support/Character.js";
class UnicodeEscapes {
static {
__name(this, "UnicodeEscapes");
}
static escapeCodePoint(codePoint, language) {
let introducer = "\\u";
let text = "";
switch (language) {
case "CSharp":
case "Python3":
case "Cpp":
case "Go":
case "PHP": {
if (Character.isSupplementaryCodePoint(codePoint)) {
introducer = "\\U";
text = codePoint.toString(16).padStart(8, "0");
} else {
text = codePoint.toString(16).padStart(4, "0");
}
break;
}
case "Swift": {
text = `{${codePoint.toString(16).padStart(4, "0")}}`;
break;
}
default: {
if (Character.isSupplementaryCodePoint(codePoint)) {
return introducer + Number(Character.highSurrogate(codePoint)).toString(16).toUpperCase().padStart(4, "0") + introducer + Number(Character.lowSurrogate(codePoint)).toString(16).toUpperCase().padStart(4, "0");
} else {
text = codePoint.toString(16).padStart(4, "0");
}
}
}
return introducer + text.toUpperCase();
}
}
export {
UnicodeEscapes
};