Comparing version 0.0.5 to 0.1.0
{ | ||
"name": "harmonizer", | ||
"version": "0.0.5", | ||
"version": "0.1.0", | ||
"description": "es6 to es5 transpiler", | ||
@@ -18,3 +18,11 @@ "main": "./index.js", | ||
}, | ||
"devDependencies": {}, | ||
"scripts": { | ||
"test": "istanbul cover _mocha test/index -- -R spec" | ||
}, | ||
"devDependencies": { | ||
"chai": "^1.9.1", | ||
"glob": "^4.0.2", | ||
"istanbul": "^0.2.11", | ||
"mocha": "^1.20.1" | ||
}, | ||
"repository": { | ||
@@ -21,0 +29,0 @@ "type": "git", |
@@ -10,3 +10,3 @@ 'use strict'; | ||
var objectPatternC = require('../util/string'); | ||
var express = objectPatternC.express; | ||
var express = objectPatternC.express, upper = objectPatternC.upper; | ||
var objectPatternB = require('../util/id'); | ||
@@ -22,3 +22,3 @@ var getUniqueId = objectPatternB.getUniqueId; | ||
if (!node.id && node.parentNode.type === syntax.VariableDeclarator) { | ||
node.id = node.parentNode.id.clone(); | ||
node.id = new nodes.Identifier({ name: upper(node.parentNode.id.name) }); | ||
} | ||
@@ -80,8 +80,5 @@ if (!node.id) { | ||
var args = extendExpression.expression.arguments; | ||
args.push(superClass, constructorFunction.id.clone(), prototype); | ||
if (members.properties.length) { | ||
args.push(members); | ||
} | ||
if (node.type === syntax.ClassExpression) { | ||
var wrapper = express('(function(){})()').expression; | ||
wrapper.arguments.push(superClass); | ||
var body = wrapper.callee.body.body; | ||
@@ -92,2 +89,4 @@ var returnStatement = new nodes.ReturnStatement({ argument: extendExpression.expression }); | ||
node.parentNode.replaceChild(node, wrapper); | ||
superClass = getUniqueId(wrapper, 'Super' + upper(constructorFunction.id.name)); | ||
wrapper.callee.params.push(superClass.clone()); | ||
} else { | ||
@@ -97,4 +96,8 @@ node.parentNode.replaceChild(node, constructorFunction); | ||
} | ||
args.push(superClass, constructorFunction.id.clone(), prototype); | ||
if (members.properties.length) { | ||
args.push(members); | ||
} | ||
}); | ||
} | ||
exports.transform = classify; |
'use strict'; | ||
var objectPatternB = require('nodes'); | ||
var nodes = objectPatternB.nodes; | ||
var objectPatternC = require('nodes'); | ||
var nodes = objectPatternC.nodes; | ||
var objectPatternB = require('../util/self'); | ||
var getSelfId = objectPatternB.getSelfId; | ||
var objectPatternA = require('../util/string'); | ||
@@ -55,4 +57,8 @@ var express = objectPatternA.express; | ||
}); | ||
body.search('=> #ThisExpression').forEach(function (node) { | ||
var selfId = getSelfId(wrapper.scope()); | ||
node.parentNode.replaceChild(node, selfId.clone()); | ||
}); | ||
}); | ||
} | ||
exports.transform = comprehendify; |
@@ -38,6 +38,8 @@ 'use strict'; | ||
} else { | ||
expression = new nodes.AssignmentExpression({ | ||
operator: '=', | ||
left: left, | ||
right: xp | ||
expression = new nodes.ExpressionStatement({ | ||
expression: new nodes.AssignmentExpression({ | ||
operator: '=', | ||
left: left, | ||
right: xp | ||
}) | ||
}); | ||
@@ -44,0 +46,0 @@ } |
var spreadA = function () { | ||
var array = [], last = arguments.length - 1; | ||
for (var i = 0; i < last; i++) { | ||
for (var i = 0; i < last; i++) | ||
array.push(arguments[i]); | ||
} | ||
var iterator = arguments[last]['@@iterator'](), step; | ||
while (!(step = iterator.next()).done) { | ||
while (!(step = iterator.next()).done) | ||
array.push(step.value); | ||
} | ||
return array; | ||
@@ -27,2 +25,3 @@ }; | ||
var applyContext = function (node, context) { | ||
var memberExpression; | ||
var args = node.arguments; | ||
@@ -39,4 +38,3 @@ var spread = args[args.length - 1]; | ||
var spreadCall = express(spreadId.name + '()').expression; | ||
var memberExpression = spreadCall.arguments; | ||
memberExpression.push.apply(memberExpression, spreadA(values(args))); | ||
(memberExpression = spreadCall.arguments).push.apply(memberExpression, spreadA(values(args))); | ||
args.push(spreadCall); | ||
@@ -54,8 +52,13 @@ propertyName = 'apply'; | ||
if (object.type !== syntax.Identifier) { | ||
var contextId = getUniqueId(node.scope(), lower(object.type)); | ||
var declaration = express('var ' + contextId.name + ' = $'); | ||
var declarator = declaration.declarations[0]; | ||
declarator.init = object; | ||
insertBefore(node, declaration); | ||
object = callee.object = contextId; | ||
var scope = node.scope(); | ||
var contextId = getUniqueId(scope, lower(object.type)); | ||
var body = nodes.Function.test(scope) ? scope.body.body : scope.body; | ||
var declaration = express('var ' + contextId.name); | ||
body.unshift(declaration); | ||
callee.object = new nodes.AssignmentExpression({ | ||
left: contextId.clone(), | ||
operator: '=', | ||
right: object | ||
}); | ||
object = contextId; | ||
} | ||
@@ -77,2 +80,3 @@ args.unshift(object.clone()); | ||
program.search('#SpreadElement < elements < #ArrayExpression').forEach(function (node) { | ||
var memberExpression; | ||
var elements = node.elements; | ||
@@ -83,4 +87,3 @@ var spread = elements[elements.length - 1]; | ||
var spreadCall = express(spreadId.name + '()').expression; | ||
var memberExpression = spreadCall.arguments; | ||
memberExpression.push.apply(memberExpression, spreadA(values(elements))); | ||
(memberExpression = spreadCall.arguments).push.apply(memberExpression, spreadA(values(elements))); | ||
node.parentNode.replaceChild(node, spreadCall); | ||
@@ -87,0 +90,0 @@ }); |
@@ -8,24 +8,3 @@ 'use strict'; | ||
var express = objectPattern.express; | ||
var extend = function (SuperClass, Class, prototype, members) { | ||
var descriptors = function (object) { | ||
var base = {}, descriptor; | ||
for (var key in object) { | ||
descriptor = Object.getOwnPropertyDescriptor(object, key); | ||
if (!('get' in descriptor) && !('set' in descriptor)) { | ||
descriptor.enumerable = false; | ||
} | ||
base[key] = descriptor; | ||
} | ||
return base; | ||
}; | ||
if (SuperClass) { | ||
Class.__proto__ = SuperClass; | ||
} | ||
Object.defineProperty(Class, 'prototype', { value: Object.create(SuperClass === null ? null : SuperClass.prototype, descriptors(prototype)) }); | ||
Object.defineProperty(Class.prototype, 'constructor', { value: Class }); | ||
if (members) { | ||
Object.defineProperties(Class, descriptors(members)); | ||
} | ||
return Class; | ||
}; | ||
var extend = 'function (SuperClass, Class, prototype, members) {\n var descriptors = function(object) {\n var base = {}, descriptor;\n for (var key in object) {\n descriptor = Object.getOwnPropertyDescriptor(object, key);\n if (!(\'get\' in descriptor) && !(\'set\' in descriptor)) {\n descriptor.enumerable = false;\n }\n base[key] = descriptor;\n }\n return base;\n };\n\n if (SuperClass) Class.__proto__ = SuperClass;\n Object.defineProperty(Class, \'prototype\', {\n value: Object.create(SuperClass === null ? null : SuperClass.prototype, descriptors(prototype))\n });\n\n Object.defineProperty(Class.prototype, \'constructor\', { value: Class });\n\n if (members) Object.defineProperties(Class, descriptors(members));\n return Class;\n}'; | ||
exports.getExtendId = function (node) { | ||
@@ -32,0 +11,0 @@ if (!node.extendId) { |
@@ -91,2 +91,3 @@ 'use strict'; | ||
}; | ||
exports.iterator = iterator; | ||
exports.values = function values(object) { | ||
@@ -93,0 +94,0 @@ return iterator(object instanceof Array ? arrayValuesNext(object) : objectValuesNext(object)); |
@@ -8,13 +8,3 @@ 'use strict'; | ||
var express = objectPattern.express; | ||
var spread = function () { | ||
var array = [], last = arguments.length - 1; | ||
for (var i = 0; i < last; i++) { | ||
array.push(arguments[i]); | ||
} | ||
var iterator = arguments[last]['@@iterator'](), step; | ||
while (!(step = iterator.next()).done) { | ||
array.push(step.value); | ||
} | ||
return array; | ||
}; | ||
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) { | ||
@@ -21,0 +11,0 @@ if (!node.spreadId) { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
541541
54
4
1032