diff --git a/FEATURES.md b/FEATURES.md new file mode 100644 index 0000000000..ea4b348ac3 --- /dev/null +++ b/FEATURES.md @@ -0,0 +1,126 @@ +# Features + +## Arrow functions + +```javascript +arr.map(x => x * x); +``` + +## Classes + +```javascript +class Foo extends Bar { + constructor() { + + } + + foo() { + + } + + get bar() { + + } + + set bar() { + + } +} +``` + +## Default parameters + +```javascript +function foo(bar = "foo") { + return bar + "bar"; +} +``` + +## Spread + +```javascript +function add(x, y) { + return x + y; +} + +var numbers = [5, 10] +add(...numbers); // 15 +``` + +## Block binding + +```javascript +for (let i in arr) { + let v = arr[i]; +} +``` + +## Property method assignment + +```javascript +var obj = { + bar: "foobar", + + foo() { + return "foobar"; + }, + + get bar() { + + }, + + set bar() { + + } +}; +``` + +## Rest parameters + +```javascript +function printList(name, ...items) { + console.log("list %s has the following items", name); + items.forEach(function (item) { + console.log(item); + }); +}; +``` + +## Template literals + +```javascript +var x = 5; +var y = 10; +console.log(`${x} + ${y} = ${x + y}`); // "5 + 10 = 15" +``` + +## Modules + +```javascript +``` + +## Property name shorthand + +```javascript +function f(x, y) { + return { x, y }; +} +``` + +## Array comprehension + +```javascript +[for (i of [1, 2, 3]) i * i]; // [1, 4, 9] +``` + +## Destructuring assignment + +```javascript +var [a, [b], c, d] = ["hello", [", ", "junk"], ["world"]]; +console.log(a + b + c); // hello, world +``` + +## Generators + +```javascript +``` diff --git a/README.md b/README.md index 93480ef106..fa09cd8e0b 100644 --- a/README.md +++ b/README.md @@ -23,26 +23,28 @@ **6to5** turns ES6 code into vanilla ES5, so you can use ES6 features **today.** - **Fast** - [10x faster than Traceur](#performance). - - **Easy** - with Browserify support, Node API, Connect Middleware and a CLI. + - **Extensive** - with Browserify support, Node API, Connect Middleware and a CLI. - **Lossless** - source map support so you can debug your compiled code with ease. - **Compact** - maps directly to the equivalent ES5 with **no runtime required**. - **Concise** - does not pollute scope with unneccesary variables. ## Features -| Name | Implemented | -| -------------------------- | ----------- | -| Arrow functions | ✓ | -| Classes | ✓ | -| Default parameters | ✓ | -| Spread | ✓ | -| Block binding | ✓ | -| Property method assignment | ✓ | -| Rest parameters | ✓ | -| Template literals | ✓ | -| Modules | ✓ | -| Destructuring assignment | | -| Generators | | +| Name | Implemented | +| -------------------------------------------------------------------- | ----------- | +| [Arrow functions](FEATURES.md#arrow-functions) | ✓ | +| [Classes](FEATURES.md#classes) | ✓ | +| [Default parameters](FEATURES.md#default-parameters) | ✓ | +| [Spread](FEATURES.md#spread) | ✓ | +| [Block binding](FEATURES.md#block-binding) | ✓ | +| [Property method assignment](FEATURES.md#property-method-assignment) | ✓ | +| [Rest parameters](FEATURES.md#rest-parameters) | ✓ | +| [Template literals](FEATURES.md#template-literals) | ✓ | +| [Modules](FEATURES.md#modules) | ✓ | +| [Array comprehension](FEATURES.md#array-comprehension) | | +| [Property name shorthand](FEATURES.md#property-name-shorthand) | | +| [Destructuring assignment](FEATURES.md#destructuring-assignment) | | +| [Generators](FEATURES.md#generators) | | ## Installation @@ -122,7 +124,7 @@ require("6to5/register"); var to5 = require("6to5"); app.use(to5.middleware({ - transform: { + options: { // options to use when transforming files }, src: "assets", diff --git a/lib/6to5/transform.js b/lib/6to5/transform.js index 15056b4ef5..aa08960db6 100644 --- a/lib/6to5/transform.js +++ b/lib/6to5/transform.js @@ -95,6 +95,8 @@ transform.test = function (actual, expect, opts) { }; transform.transformers = { + propertyNameShorthand: require("./transformers/property-name-shorthand"), + arrayComprehension: require("./transformers/array-comprehension"), arrowFunctions: require("./transformers/arrow-functions"), classes: require("./transformers/classes"), spread: require("./transformers/spread"), diff --git a/lib/6to5/transformers/array-comprehension.js b/lib/6to5/transformers/array-comprehension.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/6to5/transformers/property-name-shorthand.js b/lib/6to5/transformers/property-name-shorthand.js new file mode 100644 index 0000000000..e69de29bb2