mirror of
https://github.com/S2-/minifyfromhtml.git
synced 2025-08-03 04:10:04 +02:00
28 lines
1.0 KiB
JavaScript
28 lines
1.0 KiB
JavaScript
"use strict";
|
|
|
|
module.exports = function () {
|
|
return {
|
|
name: "minify-numeric-literals",
|
|
visitor: {
|
|
NumericLiteral(path) {
|
|
if (!path.node.extra) return;
|
|
const normal = path.node.value.toString().replace(/^0\./, ".");
|
|
let exponential = path.node.value.toExponential().replace(/\+/g, "");
|
|
|
|
if (exponential.indexOf(".") >= 0 && exponential.indexOf("e") >= 0) {
|
|
const lastChar = exponential.substr(exponential.lastIndexOf("e") + 1);
|
|
const dotIndex = exponential.lastIndexOf(".") + 1;
|
|
const subLength = exponential.substr(dotIndex, exponential.lastIndexOf("e") - dotIndex).length;
|
|
exponential = (exponential.substr(0, exponential.lastIndexOf("e") + 1) + (lastChar - subLength)).replace(".", "").replace(/e0/, "");
|
|
}
|
|
|
|
const replacement = normal.length > exponential.length ? exponential : normal;
|
|
|
|
if (path.node.extra.raw.length > replacement.length) {
|
|
path.node.extra.raw = replacement;
|
|
}
|
|
}
|
|
|
|
}
|
|
};
|
|
}; |