Awesome
Babel transform: iota
Transforms iota()
calls into ever-increasing literals, à la Go.
Installation
$ npm install babel-plugin-transform-iota
Usage
Via .babelrc
(Recommended)
.babelrc
{
"plugins": ["transform-iota"]
}
Via CLI
$ babel --plugins transform-iota script.js
Via Node API
require("babel-core").transform("code", {
plugins: ["transform-iota"]
});
Synopsis
Input
var foo = iota()
let bar = iota()
bar.baz = iota()
const qux = {
a: iota(),
[iota()]: 'b'
}
Output
var foo = [1]
let bar = [2]
bar.baz = [3]
const qux = {
a: [4],
[[5]]: 'b'
}
([5]
coerces to "5"
, which becomes a valid key. We cannot directly use
"5"
as iota, because we want to support the case where we add properties to
an iota, and we can't do that on string literals.)
Also removes all functions named iota()
, so you can still define them and
have a working implementation without Babel (and so your code lints without
/* global iota */
overrides). Here's a working example:
function iota () {
if (!this.i) { this.i = 0 }
return [this.i += 1]
}
About
Made by Félix Saparelli. Licensed under ISC. Inspired by Go.