@opra/common
Version:
Opra common package
40 lines (39 loc) • 1.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NumberLiteral = void 0;
const errors_js_1 = require("../../errors.js");
const literal_js_1 = require("../abstract/literal.js");
class NumberLiteral extends literal_js_1.Literal {
constructor(value) {
super(0);
if (typeof value === 'number' || typeof value === 'bigint') {
this.value = value;
return;
}
try {
// noinspection SuspiciousTypeOfGuard
if (typeof value === 'string') {
if (value.includes('.')) {
this.value = parseFloat(value);
return;
}
const n = Number(value);
if ('' + n === value)
this.value = n;
else
this.value = BigInt(value);
return;
}
}
catch {
//
}
throw new errors_js_1.FilterValidationError(`Invalid number literal ${value}`);
}
toString() {
return typeof this.value === 'bigint'
? ('' + this.value).replace(/n$/, '')
: '' + this.value;
}
}
exports.NumberLiteral = NumberLiteral;