'use strict';
var objectPatternB = require('nodes');
var nodes = objectPatternB.nodes;
var objectPatternA = require('./id');
var getUniqueName = objectPatternA.getUniqueName;
var objectPattern = require('./string');
var express = objectPattern.express;
var spread = 'function() {\n var array = [], last = arguments.length - 1;\n for (var i = 0; i < last; i++) array.push(arguments[i]);\n var iterator = arguments[last][\'@@iterator\'](), step;\n while (!(step = iterator.next()).done) array.push(step.value);\n return array;\n}';
exports.getSpreadId = function (node) {
if (!node.spreadId) {
var spreadName = getUniqueName(node, 'spread');
var declaration = express('var ' + spreadName + ' = ' + spread);
var id = declaration.declarations[0].id;
var body = nodes.Function.test(node) ? node.body.body : node.body;
body.unshift(declaration);
node.spreadId = id;
}
return node.spreadId;
}; |