Template Upload
This commit is contained in:
46
node_modules/buble/src/utils/spread.js
generated
vendored
Normal file
46
node_modules/buble/src/utils/spread.js
generated
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
export function isArguments ( node ) {
|
||||
return node.type === 'Identifier' && node.name === 'arguments';
|
||||
}
|
||||
|
||||
export default function spread ( code, elements, start, argumentsArrayAlias ) {
|
||||
let i = elements.length;
|
||||
let firstSpreadIndex = -1;
|
||||
|
||||
while ( i-- ) {
|
||||
const element = elements[i];
|
||||
if ( element && element.type === 'SpreadElement' ) {
|
||||
if ( isArguments( element.argument ) ) {
|
||||
code.overwrite( element.argument.start, element.argument.end, argumentsArrayAlias );
|
||||
}
|
||||
|
||||
firstSpreadIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
if ( firstSpreadIndex === -1 ) return false; // false indicates no spread elements
|
||||
|
||||
let element = elements[ firstSpreadIndex ];
|
||||
const previousElement = elements[ firstSpreadIndex - 1 ];
|
||||
|
||||
if ( !previousElement ) {
|
||||
code.remove( start, element.start );
|
||||
code.overwrite( element.end, elements[1].start, '.concat( ' );
|
||||
} else {
|
||||
code.overwrite( previousElement.end, element.start, ' ].concat( ' );
|
||||
}
|
||||
|
||||
for ( i = firstSpreadIndex; i < elements.length; i += 1 ) {
|
||||
element = elements[i];
|
||||
|
||||
if ( element ) {
|
||||
if ( element.type === 'SpreadElement' ) {
|
||||
code.remove( element.start, element.argument.start );
|
||||
} else {
|
||||
code.insertRight( element.start, '[' );
|
||||
code.insertLeft( element.end, ']' );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true; // true indicates some spread elements
|
||||
}
|
Reference in New Issue
Block a user