Files
add-and-commit/node_modules/babel-helper-to-multiple-sequence-expressions/lib/index.js
Federico Grandi f118062594 Update with working working version (#12)
* Fix workflow

* Trigger

* [auto] Update compiled version

* [auto] Commit modules

* Push Windows changes

* Fix

* [auto] Update compiled version

* Try removing cwd

* [auto] Update compiled version

* Try with path module

* [auto] Update compiled version

* Fix path

* [auto] Update compiled version

* Use raw path

* [auto] Update compiled version

* Other path

* [auto] Update compiled version

* Avoid @action/exec

* [auto] Update compiled version

* test

* [auto] Update compiled version

* test

* [auto] Update compiled version

* test

* [auto] Update compiled version

* test

* [auto] Update compiled version

* Try with shelljs

* [auto] Update compiled version

* Fix my stupidity

* Copy scripts to local dir

* [auto] Update compiled version

* Still use path

* [auto] Update compiled version

* Delete entrypoint.sh

* [auto] Update compiled version

* Make file executable

* [auto] Update compiled version

* Try using bash

* [auto] Update compiled version
2019-12-14 21:47:13 +01:00

138 lines
3.1 KiB
JavaScript

"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 = [];
const comments = [];
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.leadingComments) {
comments.push(...node.leadingComments);
}
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);
}
/**
* collect all the comment ast nodes that are before expression
* statments and add it to the new generated node
*/
if (seq) {
seq.leadingComments = comments;
}
/* eslint-disable no-self-assign */
seq = seq;
return {
seq
};
}
};
};