1.0.0 • Published 8 years ago

babel-plugin-transform-iota v1.0.0

Weekly downloads
2
License
ISC
Repository
github
Last release
8 years ago

Babel transform: iota

License: ISC Travis CI Test Status Code of Conduct

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.