506 lines
16 KiB
JavaScript
506 lines
16 KiB
JavaScript
// Metro module 1283 (f1284).
|
|
import { WHITE_SPACE_REGEX } from "./Module1284";
|
|
import { __assign } from "./Module1281";
|
|
function $mk68645($env) {
|
|
return function(a0, a1, a2) {
|
|
const r1 = $env;
|
|
if (typeof a2 !== "string") {
|
|
const r15 = r1[0];
|
|
r15.minimumSignificantDigits = a1.length;
|
|
r15.maximumSignificantDigits = a1.length;
|
|
} else if (a2 === "+") {
|
|
r1[0].minimumSignificantDigits = a1.length;
|
|
} else if (a1[0] === "#") {
|
|
r1[0].maximumSignificantDigits = a1.length;
|
|
} else {
|
|
const r7 = r1[0];
|
|
r7.minimumSignificantDigits = a1.length;
|
|
r7.maximumSignificantDigits = a1.length + (typeof a2 === "string" ? a2.length : 0);
|
|
}
|
|
return "";
|
|
};
|
|
}
|
|
let c1050_2, c1050_3, c1050_4, c1050_5;
|
|
export function parseNumberSkeletonFromString(a0) {
|
|
if (a0.length === 0) {
|
|
throw new Error("Number skeleton cannot be empty");
|
|
}
|
|
const r16 = [];
|
|
const r24 = a0.split(WHITE_SPACE_REGEX).filter(function(item) {
|
|
return item.length > 0;
|
|
});
|
|
const r26 = 0 < r24.length;
|
|
let r3 = 0;
|
|
if (r26) {
|
|
do {
|
|
const r30 = r24[r3].split("/");
|
|
const length = r30.length;
|
|
const r5 = r3;
|
|
if (length === 0) {
|
|
throw new Error("Invalid number skeleton");
|
|
}
|
|
const stem = r30[0];
|
|
const options = r30.slice(1);
|
|
const r34 = 0 < options.length;
|
|
let r0 = 0;
|
|
if (r34) {
|
|
do {
|
|
const length2 = options[r0].length;
|
|
const r1 = r0;
|
|
if (length2 === 0) {
|
|
throw new Error("Invalid number skeleton");
|
|
}
|
|
r0 = r1 + 1;
|
|
} while (r0 < options.length);
|
|
}
|
|
r16.push({
|
|
stem,
|
|
options
|
|
});
|
|
r3 = r5 + 1;
|
|
} while (r3 < r24.length);
|
|
}
|
|
return r16;
|
|
}
|
|
c1050_2 = /^\.(?:(0+)(\*)?|(#+)|(0+)(#+))$/g;
|
|
c1050_3 = /^(@+)?(\+|#+)?[rs]?$/g;
|
|
c1050_4 = /(\*)(0+)|(#+)(0+)|(0+)/g;
|
|
c1050_5 = /^(0+)$/;
|
|
export function parseNumberSkeleton(a0) {
|
|
let r4, r69, r135, r150, r151, r156, length;
|
|
const r10 = {};
|
|
let c12945_0 = r10;
|
|
const r8 = 0 < a0.length;
|
|
let r2 = 0;
|
|
let r12 = r10;
|
|
let r62 = r12;
|
|
if (r8) {
|
|
do {
|
|
L72: {
|
|
const r48 = a0[r2];
|
|
const stem = r48.stem;
|
|
r4 = r2;
|
|
const r63 = r12;
|
|
switch (stem) {
|
|
case "percent":
|
|
case "%":
|
|
r63.style = "percent";
|
|
r69 = r63;
|
|
break L72;
|
|
case "%x100":
|
|
r63.style = "percent";
|
|
r63.scale = 100;
|
|
r69 = r63;
|
|
break L72;
|
|
case "currency":
|
|
r63.style = "currency";
|
|
r63.currency = r48.options[0];
|
|
r69 = r63;
|
|
break L72;
|
|
case "group-off":
|
|
case ",_":
|
|
r63.useGrouping = false;
|
|
r69 = r63;
|
|
break L72;
|
|
case "precision-integer":
|
|
case ".":
|
|
r63.maximumFractionDigits = 0;
|
|
r69 = r63;
|
|
break L72;
|
|
case "measure-unit":
|
|
case "unit":
|
|
r63.style = "unit";
|
|
r63.unit = r48.options[0].replace(/^(.*?)-/, "");
|
|
r69 = r63;
|
|
break L72;
|
|
case "compact-short":
|
|
case "K":
|
|
r63.notation = "compact";
|
|
r63.compactDisplay = "short";
|
|
r69 = r63;
|
|
break L72;
|
|
case "compact-long":
|
|
case "KK":
|
|
r63.notation = "compact";
|
|
r63.compactDisplay = "long";
|
|
r69 = r63;
|
|
break L72;
|
|
case "scientific":
|
|
const r115 = __assign(__assign(__assign({}, r63), {
|
|
notation: "scientific"
|
|
}), r48.options.reduce(function(acc, option) {
|
|
let r12, r14;
|
|
L8: {
|
|
r12 = __assign({}, acc);
|
|
r14 = void 0;
|
|
switch (option) {
|
|
case "sign-auto":
|
|
r14 = {
|
|
signDisplay: "auto"
|
|
};
|
|
break L8;
|
|
case "sign-accounting":
|
|
case "()":
|
|
r14 = {
|
|
currencySign: "accounting"
|
|
};
|
|
break L8;
|
|
case "sign-always":
|
|
case "+!":
|
|
r14 = {
|
|
signDisplay: "always"
|
|
};
|
|
break L8;
|
|
case "sign-accounting-always":
|
|
case "()!":
|
|
r14 = {
|
|
signDisplay: "always",
|
|
currencySign: "accounting"
|
|
};
|
|
break L8;
|
|
case "sign-except-zero":
|
|
case "+?":
|
|
r14 = {
|
|
signDisplay: "exceptZero"
|
|
};
|
|
break L8;
|
|
case "sign-accounting-except-zero":
|
|
case "()?":
|
|
r14 = {
|
|
signDisplay: "exceptZero",
|
|
currencySign: "accounting"
|
|
};
|
|
break L8;
|
|
case "sign-never":
|
|
case "+_":
|
|
r14 = {
|
|
signDisplay: "never"
|
|
};
|
|
break L8;
|
|
default:
|
|
}
|
|
}
|
|
if (!r14) {
|
|
r14 = {};
|
|
}
|
|
return __assign(r12, r14);
|
|
}, {}));
|
|
c12945_0 = r115;
|
|
r69 = r115;
|
|
break L72;
|
|
case "engineering":
|
|
const r94 = __assign(__assign(__assign({}, r63), {
|
|
notation: "engineering"
|
|
}), r48.options.reduce(function(acc, option) {
|
|
let r12, r14;
|
|
L8: {
|
|
r12 = __assign({}, acc);
|
|
r14 = void 0;
|
|
switch (option) {
|
|
case "sign-auto":
|
|
r14 = {
|
|
signDisplay: "auto"
|
|
};
|
|
break L8;
|
|
case "sign-accounting":
|
|
case "()":
|
|
r14 = {
|
|
currencySign: "accounting"
|
|
};
|
|
break L8;
|
|
case "sign-always":
|
|
case "+!":
|
|
r14 = {
|
|
signDisplay: "always"
|
|
};
|
|
break L8;
|
|
case "sign-accounting-always":
|
|
case "()!":
|
|
r14 = {
|
|
signDisplay: "always",
|
|
currencySign: "accounting"
|
|
};
|
|
break L8;
|
|
case "sign-except-zero":
|
|
case "+?":
|
|
r14 = {
|
|
signDisplay: "exceptZero"
|
|
};
|
|
break L8;
|
|
case "sign-accounting-except-zero":
|
|
case "()?":
|
|
r14 = {
|
|
signDisplay: "exceptZero",
|
|
currencySign: "accounting"
|
|
};
|
|
break L8;
|
|
case "sign-never":
|
|
case "+_":
|
|
r14 = {
|
|
signDisplay: "never"
|
|
};
|
|
break L8;
|
|
default:
|
|
}
|
|
}
|
|
if (!r14) {
|
|
r14 = {};
|
|
}
|
|
return __assign(r12, r14);
|
|
}, {}));
|
|
c12945_0 = r94;
|
|
r69 = r94;
|
|
break L72;
|
|
case "notation-simple":
|
|
r63.notation = "standard";
|
|
r69 = r63;
|
|
break L72;
|
|
case "unit-width-narrow":
|
|
r63.currencyDisplay = "narrowSymbol";
|
|
r63.unitDisplay = "narrow";
|
|
r69 = r63;
|
|
break L72;
|
|
case "unit-width-short":
|
|
r63.currencyDisplay = "code";
|
|
r63.unitDisplay = "short";
|
|
r69 = r63;
|
|
break L72;
|
|
case "unit-width-full-name":
|
|
r63.currencyDisplay = "name";
|
|
r63.unitDisplay = "long";
|
|
r69 = r63;
|
|
break L72;
|
|
case "unit-width-iso-code":
|
|
r63.currencyDisplay = "symbol";
|
|
r69 = r63;
|
|
break L72;
|
|
case "scale":
|
|
r63.scale = parseFloat(r48.options[0]);
|
|
r69 = r63;
|
|
break L72;
|
|
case "rounding-mode-floor":
|
|
r63.roundingMode = "floor";
|
|
r69 = r63;
|
|
break L72;
|
|
case "rounding-mode-ceiling":
|
|
r63.roundingMode = "ceil";
|
|
r69 = r63;
|
|
break L72;
|
|
case "rounding-mode-down":
|
|
r63.roundingMode = "trunc";
|
|
r69 = r63;
|
|
break L72;
|
|
case "rounding-mode-up":
|
|
r63.roundingMode = "expand";
|
|
r69 = r63;
|
|
break L72;
|
|
case "rounding-mode-half-even":
|
|
r63.roundingMode = "halfEven";
|
|
r69 = r63;
|
|
break L72;
|
|
case "rounding-mode-half-down":
|
|
r63.roundingMode = "halfTrunc";
|
|
r69 = r63;
|
|
break L72;
|
|
case "rounding-mode-half-up":
|
|
r63.roundingMode = "halfExpand";
|
|
r69 = r63;
|
|
break L72;
|
|
case "integer-width":
|
|
if (r48.options.length > 1) {
|
|
throw new RangeError("integer-width stems only accept a single optional option");
|
|
}
|
|
r48.options[0].replace(c1050_4, function(a0, a1, a2, a3, a4, a5) {
|
|
if (a1) {
|
|
c12945_0.minimumIntegerDigits = a2.length;
|
|
} else {
|
|
if (a3 && a4) {
|
|
throw new Error("We currently do not support maximum integer digits");
|
|
}
|
|
if (a5) {
|
|
throw new Error("We currently do not support exact integer digits");
|
|
}
|
|
}
|
|
return "";
|
|
});
|
|
r69 = r63;
|
|
break L72;
|
|
default:
|
|
if (c1050_5.test(r48.stem)) {
|
|
r63.minimumIntegerDigits = r48.stem.length;
|
|
r69 = r63;
|
|
} else if (c1050_2.test(r48.stem)) {
|
|
if (r48.options.length > 1) {
|
|
throw new RangeError("Fraction-precision stems only accept a single optional option");
|
|
}
|
|
r48.stem.replace(c1050_2, function(a0, a1, a2, a3, a4, a5) {
|
|
L9: {
|
|
if (a2 === "*") {
|
|
c12945_0.minimumFractionDigits = a1.length;
|
|
} else {
|
|
if (a3 && a3[0] === "#") {
|
|
c12945_0.maximumFractionDigits = a3.length;
|
|
break L9;
|
|
}
|
|
if (a4 && a5) {
|
|
c12945_0.minimumFractionDigits = a4.length;
|
|
c12945_0.maximumFractionDigits = a4.length + a5.length;
|
|
break L9;
|
|
}
|
|
c12945_0.minimumFractionDigits = a1.length;
|
|
c12945_0.maximumFractionDigits = a1.length;
|
|
}
|
|
}
|
|
return "";
|
|
});
|
|
const r208 = r48.options[0];
|
|
if (r208 === "w") {
|
|
const r243 = __assign(__assign({}, r63), {
|
|
trailingZeroDisplay: "stripIfInteger"
|
|
});
|
|
c12945_0 = r243;
|
|
r69 = r243;
|
|
} else {
|
|
r69 = r63;
|
|
if (r208) {
|
|
let env12947;
|
|
const r218 = __assign({}, r63);
|
|
const r219 = env12947 = {};
|
|
const r220 = {};
|
|
env12947[0] = r220;
|
|
if (r208[r208.length - 1] === "r") {
|
|
r220.roundingPriority = "morePrecision";
|
|
} else if (r208[r208.length - 1] === "s") {
|
|
r220.roundingPriority = "lessPrecision";
|
|
}
|
|
r208.replace(c1050_3, $mk68645(r219));
|
|
const r231 = __assign(r218, r220);
|
|
c12945_0 = r231;
|
|
r69 = r231;
|
|
}
|
|
}
|
|
} else if (c1050_3.test(r48.stem)) {
|
|
let env12946;
|
|
const r188 = __assign({}, r63);
|
|
const stem4 = r48.stem;
|
|
const r190 = env12946 = {};
|
|
const r191 = {};
|
|
env12946[0] = r191;
|
|
if (stem4[stem4.length - 1] === "r") {
|
|
r191.roundingPriority = "morePrecision";
|
|
} else if (stem4[stem4.length - 1] === "s") {
|
|
r191.roundingPriority = "lessPrecision";
|
|
}
|
|
stem4.replace(c1050_3, $mk68645(r190));
|
|
const r200 = __assign(r188, r191);
|
|
c12945_0 = r200;
|
|
r69 = r200;
|
|
} else {
|
|
L39: {
|
|
const stem2 = r48.stem;
|
|
r135 = void 0;
|
|
switch (stem2) {
|
|
case "sign-auto":
|
|
r135 = {
|
|
signDisplay: "auto"
|
|
};
|
|
break L39;
|
|
case "sign-accounting":
|
|
case "()":
|
|
r135 = {
|
|
currencySign: "accounting"
|
|
};
|
|
break L39;
|
|
case "sign-always":
|
|
case "+!":
|
|
r135 = {
|
|
signDisplay: "always"
|
|
};
|
|
break L39;
|
|
case "sign-accounting-always":
|
|
case "()!":
|
|
r135 = {
|
|
signDisplay: "always",
|
|
currencySign: "accounting"
|
|
};
|
|
break L39;
|
|
case "sign-except-zero":
|
|
case "+?":
|
|
r135 = {
|
|
signDisplay: "exceptZero"
|
|
};
|
|
break L39;
|
|
case "sign-accounting-except-zero":
|
|
case "()?":
|
|
r135 = {
|
|
signDisplay: "exceptZero",
|
|
currencySign: "accounting"
|
|
};
|
|
break L39;
|
|
case "sign-never":
|
|
case "+_":
|
|
r135 = {
|
|
signDisplay: "never"
|
|
};
|
|
break L39;
|
|
default:
|
|
}
|
|
}
|
|
let r56 = r63;
|
|
if (r135) {
|
|
const r145 = __assign(__assign({}, r63), r135);
|
|
c12945_0 = r145;
|
|
r56 = r145;
|
|
}
|
|
const stem3 = r48.stem;
|
|
if (stem3[0] === "E" && stem3[1] === "E") {
|
|
r150 = {
|
|
notation: "engineering"
|
|
};
|
|
r151 = stem3.slice(2);
|
|
} else {
|
|
const r149 = stem3[0];
|
|
r150 = void 0;
|
|
r151 = stem3;
|
|
if (r149 === "E") {
|
|
r150 = {
|
|
notation: "scientific"
|
|
};
|
|
r151 = stem3.slice(1);
|
|
}
|
|
}
|
|
if (r150) {
|
|
const r155 = r151.slice(0, 2);
|
|
if (r155 === "+!") {
|
|
r150.signDisplay = "always";
|
|
r156 = r151.slice(2);
|
|
} else {
|
|
r156 = r151;
|
|
if (r155 === "+?") {
|
|
r150.signDisplay = "exceptZero";
|
|
r156 = r151.slice(2);
|
|
}
|
|
}
|
|
if (!c1050_5.test(r156)) {
|
|
throw new Error("Malformed concise eng/scientific notation");
|
|
}
|
|
r150.minimumIntegerDigits = r156.length;
|
|
}
|
|
r69 = r56;
|
|
if (r150) {
|
|
const r178 = __assign(__assign({}, r56), r150);
|
|
c12945_0 = r178;
|
|
r69 = r178;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
r2 = r4 + 1;
|
|
length = a0.length;
|
|
r12 = r69;
|
|
r62 = r12;
|
|
} while (r2 < length);
|
|
}
|
|
return r62;
|
|
}
|