UNPKG

@opra/common

Version:
40 lines (39 loc) 1.25 kB
"use strict"; 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;