roblox-ts
Version:
A TypeScript-to-Luau Compiler for Roblox
306 lines • 6.75 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.fixupWhitespaceAndDecodeEntities = fixupWhitespaceAndDecodeEntities;
const typescript_1 = __importDefault(require("typescript"));
function fixupWhitespaceAndDecodeEntities(text) {
let acc;
let firstNonWhitespace = 0;
let lastNonWhitespace = -1;
for (let i = 0; i < text.length; i++) {
const c = text.charCodeAt(i);
if (typescript_1.default.isLineBreak(c)) {
if (firstNonWhitespace !== -1 && lastNonWhitespace !== -1) {
acc = addLineOfJsxText(acc, text.substr(firstNonWhitespace, lastNonWhitespace - firstNonWhitespace + 1));
}
firstNonWhitespace = -1;
}
else if (!typescript_1.default.isWhiteSpaceSingleLine(c)) {
lastNonWhitespace = i;
if (firstNonWhitespace === -1) {
firstNonWhitespace = i;
}
}
}
return firstNonWhitespace !== -1
?
addLineOfJsxText(acc, text.substr(firstNonWhitespace))
:
acc;
}
function addLineOfJsxText(acc, trimmedLine) {
const decoded = decodeEntities(trimmedLine);
return acc === undefined ? decoded : acc + " " + decoded;
}
function decodeEntities(text) {
return text.replace(/&((#((\d+)|x([\da-fA-F]+)))|(\w+));/g, (match, _all, _number, _digits, decimal, hex, word) => {
if (decimal) {
return typescript_1.default.utf16EncodeAsString(parseInt(decimal, 10));
}
else if (hex) {
return typescript_1.default.utf16EncodeAsString(parseInt(hex, 16));
}
else {
const ch = entities.get(word);
return ch ? typescript_1.default.utf16EncodeAsString(ch) : match;
}
});
}
const entities = new Map(Object.entries({
quot: 0x0022,
amp: 0x0026,
apos: 0x0027,
lt: 0x003c,
gt: 0x003e,
nbsp: 0x00a0,
iexcl: 0x00a1,
cent: 0x00a2,
pound: 0x00a3,
curren: 0x00a4,
yen: 0x00a5,
brvbar: 0x00a6,
sect: 0x00a7,
uml: 0x00a8,
copy: 0x00a9,
ordf: 0x00aa,
laquo: 0x00ab,
not: 0x00ac,
shy: 0x00ad,
reg: 0x00ae,
macr: 0x00af,
deg: 0x00b0,
plusmn: 0x00b1,
sup2: 0x00b2,
sup3: 0x00b3,
acute: 0x00b4,
micro: 0x00b5,
para: 0x00b6,
middot: 0x00b7,
cedil: 0x00b8,
sup1: 0x00b9,
ordm: 0x00ba,
raquo: 0x00bb,
frac14: 0x00bc,
frac12: 0x00bd,
frac34: 0x00be,
iquest: 0x00bf,
Agrave: 0x00c0,
Aacute: 0x00c1,
Acirc: 0x00c2,
Atilde: 0x00c3,
Auml: 0x00c4,
Aring: 0x00c5,
AElig: 0x00c6,
Ccedil: 0x00c7,
Egrave: 0x00c8,
Eacute: 0x00c9,
Ecirc: 0x00ca,
Euml: 0x00cb,
Igrave: 0x00cc,
Iacute: 0x00cd,
Icirc: 0x00ce,
Iuml: 0x00cf,
ETH: 0x00d0,
Ntilde: 0x00d1,
Ograve: 0x00d2,
Oacute: 0x00d3,
Ocirc: 0x00d4,
Otilde: 0x00d5,
Ouml: 0x00d6,
times: 0x00d7,
Oslash: 0x00d8,
Ugrave: 0x00d9,
Uacute: 0x00da,
Ucirc: 0x00db,
Uuml: 0x00dc,
Yacute: 0x00dd,
THORN: 0x00de,
szlig: 0x00df,
agrave: 0x00e0,
aacute: 0x00e1,
acirc: 0x00e2,
atilde: 0x00e3,
auml: 0x00e4,
aring: 0x00e5,
aelig: 0x00e6,
ccedil: 0x00e7,
egrave: 0x00e8,
eacute: 0x00e9,
ecirc: 0x00ea,
euml: 0x00eb,
igrave: 0x00ec,
iacute: 0x00ed,
icirc: 0x00ee,
iuml: 0x00ef,
eth: 0x00f0,
ntilde: 0x00f1,
ograve: 0x00f2,
oacute: 0x00f3,
ocirc: 0x00f4,
otilde: 0x00f5,
ouml: 0x00f6,
divide: 0x00f7,
oslash: 0x00f8,
ugrave: 0x00f9,
uacute: 0x00fa,
ucirc: 0x00fb,
uuml: 0x00fc,
yacute: 0x00fd,
thorn: 0x00fe,
yuml: 0x00ff,
OElig: 0x0152,
oelig: 0x0153,
Scaron: 0x0160,
scaron: 0x0161,
Yuml: 0x0178,
fnof: 0x0192,
circ: 0x02c6,
tilde: 0x02dc,
Alpha: 0x0391,
Beta: 0x0392,
Gamma: 0x0393,
Delta: 0x0394,
Epsilon: 0x0395,
Zeta: 0x0396,
Eta: 0x0397,
Theta: 0x0398,
Iota: 0x0399,
Kappa: 0x039a,
Lambda: 0x039b,
Mu: 0x039c,
Nu: 0x039d,
Xi: 0x039e,
Omicron: 0x039f,
Pi: 0x03a0,
Rho: 0x03a1,
Sigma: 0x03a3,
Tau: 0x03a4,
Upsilon: 0x03a5,
Phi: 0x03a6,
Chi: 0x03a7,
Psi: 0x03a8,
Omega: 0x03a9,
alpha: 0x03b1,
beta: 0x03b2,
gamma: 0x03b3,
delta: 0x03b4,
epsilon: 0x03b5,
zeta: 0x03b6,
eta: 0x03b7,
theta: 0x03b8,
iota: 0x03b9,
kappa: 0x03ba,
lambda: 0x03bb,
mu: 0x03bc,
nu: 0x03bd,
xi: 0x03be,
omicron: 0x03bf,
pi: 0x03c0,
rho: 0x03c1,
sigmaf: 0x03c2,
sigma: 0x03c3,
tau: 0x03c4,
upsilon: 0x03c5,
phi: 0x03c6,
chi: 0x03c7,
psi: 0x03c8,
omega: 0x03c9,
thetasym: 0x03d1,
upsih: 0x03d2,
piv: 0x03d6,
ensp: 0x2002,
emsp: 0x2003,
thinsp: 0x2009,
zwnj: 0x200c,
zwj: 0x200d,
lrm: 0x200e,
rlm: 0x200f,
ndash: 0x2013,
mdash: 0x2014,
lsquo: 0x2018,
rsquo: 0x2019,
sbquo: 0x201a,
ldquo: 0x201c,
rdquo: 0x201d,
bdquo: 0x201e,
dagger: 0x2020,
Dagger: 0x2021,
bull: 0x2022,
hellip: 0x2026,
permil: 0x2030,
prime: 0x2032,
Prime: 0x2033,
lsaquo: 0x2039,
rsaquo: 0x203a,
oline: 0x203e,
frasl: 0x2044,
euro: 0x20ac,
image: 0x2111,
weierp: 0x2118,
real: 0x211c,
trade: 0x2122,
alefsym: 0x2135,
larr: 0x2190,
uarr: 0x2191,
rarr: 0x2192,
darr: 0x2193,
harr: 0x2194,
crarr: 0x21b5,
lArr: 0x21d0,
uArr: 0x21d1,
rArr: 0x21d2,
dArr: 0x21d3,
hArr: 0x21d4,
forall: 0x2200,
part: 0x2202,
exist: 0x2203,
empty: 0x2205,
nabla: 0x2207,
isin: 0x2208,
notin: 0x2209,
ni: 0x220b,
prod: 0x220f,
sum: 0x2211,
minus: 0x2212,
lowast: 0x2217,
radic: 0x221a,
prop: 0x221d,
infin: 0x221e,
ang: 0x2220,
and: 0x2227,
or: 0x2228,
cap: 0x2229,
cup: 0x222a,
int: 0x222b,
there4: 0x2234,
sim: 0x223c,
cong: 0x2245,
asymp: 0x2248,
ne: 0x2260,
equiv: 0x2261,
le: 0x2264,
ge: 0x2265,
sub: 0x2282,
sup: 0x2283,
nsub: 0x2284,
sube: 0x2286,
supe: 0x2287,
oplus: 0x2295,
otimes: 0x2297,
perp: 0x22a5,
sdot: 0x22c5,
lceil: 0x2308,
rceil: 0x2309,
lfloor: 0x230a,
rfloor: 0x230b,
lang: 0x2329,
rang: 0x232a,
loz: 0x25ca,
spades: 0x2660,
clubs: 0x2663,
hearts: 0x2665,
diams: 0x2666,
}));
//# sourceMappingURL=fixupWhitespaceAndDecodeEntities.js.map