babel-core
Version:
A compiler for writing next generation JavaScript
54 lines (43 loc) • 1.32 kB
JavaScript
;
exports.__esModule = true;
// istanbul ignore next
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _lodashCollectionSortBy = require("lodash/collection/sortBy");
var _lodashCollectionSortBy2 = _interopRequireDefault(_lodashCollectionSortBy);
var metadata = {
group: "builtin-trailing"
};
exports.metadata = metadata;
/**
* [Please add a description.]
*
* Priority:
*
* - 0 We want this to be at the **very** bottom
* - 1 Default node position
* - 2 Priority over normal nodes
* - 3 We want this to be at the **very** top
*/
var visitor = {
/**
* [Please add a description.]
*/
Block: {
exit: function exit(node) {
var hasChange = false;
for (var i = 0; i < node.body.length; i++) {
var bodyNode = node.body[i];
if (bodyNode && bodyNode._blockHoist != null) hasChange = true;
}
if (!hasChange) return;
node.body = _lodashCollectionSortBy2["default"](node.body, function (bodyNode) {
var priority = bodyNode && bodyNode._blockHoist;
if (priority == null) priority = 1;
if (priority === true) priority = 2;
// Higher priorities should move toward the top.
return -1 * priority;
});
}
}
};
exports.visitor = visitor;