sam-parsons / babel-plugin-transform-walrus-operator

return a value from an assignment expression

Home Page:https://www.npmjs.com/package/babel-plugin-transform-walrus-operator

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

npm size libera manifesto

babel-plugin-transform-walrus-operator

compile the walrus operator := to an IIFE

About

assignment statement

  • assigns 42 to x
  • returns undefined
x = 42;

assignment expression

  • assigns 42 to x
  • returns 42
(x := 42)

Example use case

y = func(x);
const arr = [y, y ** 2, y ** 4, y ** 6];

can become

const arr = [y := func(x), y ** 2, y ** 4, y ** 6]

Transformation

if (x := 2) alert();

generally becomes

if ((function (x) {
  if (typeof x === 'undefined') throw new Error();
  x = 2;
  return x;
})(x)) alert();

Babel Setup

this plugin relies upon the := token, it will have to be manually added to babel's parser

follow Tan Li Hau's guide, you will fork babel and add a token to the parser. see my babel fork commit

Installation

$ npm install --save-dev babel-plugin-transform-walrus-operator

Usage

.babelrc

{
  "plugins": ["transform-walrus-operator"]
}

Via CLI

$ babel --plugins transform-walrus-operator script.js

Via Node API

require('babel-core').transform('code', {
  plugins: ['transform-walrus-operator'],
});

License

MIT

About

return a value from an assignment expression

https://www.npmjs.com/package/babel-plugin-transform-walrus-operator


Languages

Language:JavaScript 100.0%