@kosich/babel-plugin-partial-expressions-experiment

0.0.4 • Public • Published

Partial Expressions - Babel plugin

Try it in this babel playground.

Or install it via

npm i @kosich/babel-plugin-partial-expressions-experiment -D

And then add it to your babel.config.json as described here.

NOTE: put it before pipeline operator plugins, if you use those.

About

Partial expressions is a syntax sugar to simplify writing expression that are awating one additional variable.

Syntax:

  • _ is a placeholder for the value
  • ~ is used to mark partial expression root and is required whenever we use _ (except for RHS pipes)

Examples:

let bang = ~ _ + '!';
// equals to
let bang = x => x + '!';

As a partially applied function:

let bangLog = ~ console.log(_, '!');
// equals to
let bangLog = x => console.log(x, '!');

And as a context of application:

let toBase16 = ~ _.toString(16);
// equals to
let toBase16 = x => x.toString(16);

It is also compatible with the pipeline operator:

I tried to cover a special case for pipes, when _ is in RHS of a pipe. E.g:

let value = 42 |> _ + 1 |> console.log;
// equals to
let value = 42 |> (x => x + 1) |> console.log;

Similarly, we can do partial application:

42 |> console.log(_, '!');
// equals to
42 |> (x => console.log(x, '!'));

And as a context:

42 |> _.toString(16) |> _.toUpperCase();
// equals to
42 |> (x => x.toString(16)) |> (x => x.toUpperCase());

Rules

  1. Expression is considered partial if an unbound _ symbol is used in it.

  2. Expression boudaries are limited by following:

    2.1 ~ operator let a = ~ _ + '!' equals let a = x => x + '!'

    2.2 RHS in pipeline operator
    42 |> _ + 1 |> console.log equals 42 |> (x => x + 1) |> console.log

The End 🙂

Readme

Keywords

Package Sidebar

Install

npm i @kosich/babel-plugin-partial-expressions-experiment

Weekly Downloads

1

Version

0.0.4

License

MIT

Unpacked Size

7.83 kB

Total Files

3

Last publish

Collaborators

  • kosich