https://github.com/delanni/if-expression
$if 💰Expression based conditional.
https://github.com/delanni/if-expression
expression functional-js javascript library
Last synced: over 1 year ago
JSON representation
$if 💰Expression based conditional.
- Host: GitHub
- URL: https://github.com/delanni/if-expression
- Owner: delanni
- License: other
- Created: 2020-01-17T17:33:43.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-07-09T15:36:03.000Z (almost 2 years ago)
- Last Synced: 2024-10-08T13:11:43.310Z (over 1 year ago)
- Topics: expression, functional-js, javascript, library
- Language: TypeScript
- Homepage:
- Size: 101 KB
- Stars: 7
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# $if 💰Expression based conditional.
_You can read this as dolla'-if._
Javascript's `if` is unfortunately not an expression, which means you can't use it as a right hand side of an expression or in places where you can only put a single value. Luckily, `$if` can function as an expression.
## Installation
For now, you can only use this with node.js, or using a bundler, because it's not exposing any globals, but who are we kidding, it's 2020, you probably do this daily already.
```bash
npm install --save dolla-if
```
## Examples
This if-expression works like a regular if-else clause, except, your expression has a return value:
```javascript
const { $if } = require('dolla-if');
// or to you who live in the future:
// import $if from 'dolla-if';
const isPartyTime = new Date().getHours() > 20 || new Date().getHours() < 5;
const myFriendsCallMe = $if(isPartyTime)
.then('ßling-ßling John$on')
.else('Gregory Buttsoup');
console.log({myFriendsCallMe});
```
It's especially useful when you're trying to use some inline react JSX, because those inline curlies only support expressions, so unless you want to do some IIFE ugliness:
```jsx
const RegularHeader = ({ dayOfTheWeek }) => {
return (
{
$if(dayOfTheWeek === 3).then(It's Wednesday my dudes! 🐸
)
.elseIf(dayOfTheWeek === 5).then(Call Rebecca Black! 👯♂️
)
.else(No partying allowed. 🙅♂️
)
}
)
}
```
You can also use it with unit functions, to short circuit execution of branches where the chain executes to false:
```javascript
const result = $if(false)
.thenDo(() => computeEngine.computeValue())
.elseIf(true).thenDo(() => computeEngine.computeSomethingElse())
.elseIf(Math.random() > 0.5).then('bingo!')
.elseDo(computeEngine.getDefaultValue);
```
In this above example, only one of the branches gets executed, so you don't need to worry about all the wasted calculation or unwanted side-effects.
---
And $if also supports types through [Typescript](http://typescriptlang.org/)!
Contains no meat™!