Transforms iota()
calls into ever-increasing literals, à la Go.
$ npm install babel-plugin-transform-iota
.babelrc
{
"plugins": ["transform-iota"]
}
$ babel --plugins transform-iota script.js
require("babel-core").transform("code", {
plugins: ["transform-iota"]
});
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]
}
Made by Félix Saparelli. Licensed under ISC. Inspired by Go.