Skip to content

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

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Via .babelrc (Recommended)

.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