1
0
mirror of https://github.com/S2-/minifyfromhtml.git synced 2025-08-03 20:30:04 +02:00

add some packages

This commit is contained in:
s2
2018-05-05 13:54:07 +02:00
parent 48c1138518
commit ff6e20677d
3738 changed files with 215920 additions and 0 deletions

View File

@@ -0,0 +1,124 @@
"use strict";
module.exports = function (t) {
return function toMultipleSequenceExpressions(statements) {
const retStatements = [];
let bailed;
do {
const res = convert(statements);
bailed = res.bailed;
const seq = res.seq,
bailedAtIndex = res.bailedAtIndex;
if (seq) {
retStatements.push(t.expressionStatement(seq));
}
if (bailed && statements[bailedAtIndex]) {
retStatements.push(statements[bailedAtIndex]);
}
if (bailed) {
statements = statements.slice(bailedAtIndex + 1);
if (!statements.length) {
bailed = false;
}
}
} while (bailed);
return retStatements;
function convert(nodes) {
const exprs = [];
for (let i = 0; i < nodes.length; i++) {
const bail = () => {
let seq;
if (exprs.length === 1) {
seq = exprs[0];
} else if (exprs.length) {
seq = t.sequenceExpression(exprs);
}
return {
seq,
bailed: true,
bailedAtIndex: i
};
};
const node = nodes[i];
if (t.isExpression(node)) {
exprs.push(node);
} else if (t.isExpressionStatement(node)) {
if (node.expression) exprs.push(node.expression);
} else if (t.isIfStatement(node)) {
let consequent;
if (node.consequent) {
const res = convert([node.consequent]);
if (res.bailed) {
return bail();
}
consequent = res.seq;
}
let alternate;
if (node.alternate) {
const res = convert([node.alternate]);
if (res.bailed) {
return bail();
}
alternate = res.seq;
}
if (!alternate && !consequent) {
exprs.push(node.test);
} else if (!alternate) {
exprs.push(t.logicalExpression("&&", node.test, consequent));
} else if (!consequent) {
exprs.push(t.logicalExpression("||", node.test, alternate));
} else {
exprs.push(t.conditionalExpression(node.test, consequent, alternate));
}
} else if (t.isBlockStatement(node)) {
const res = convert(node.body);
if (res.bailed) {
return bail();
}
if (res.seq) {
exprs.push(res.seq);
}
} else {
return bail();
}
}
let seq;
if (exprs.length === 1) {
seq = exprs[0];
} else if (exprs.length) {
seq = t.sequenceExpression(exprs);
}
/* eslint-disable no-self-assign */
seq = seq;
return {
seq
};
}
};
};