https://github.com/flipbyte/when-condition
Check conditional statements and return true/false
https://github.com/flipbyte/when-condition
Last synced: 5 months ago
JSON representation
Check conditional statements and return true/false
- Host: GitHub
- URL: https://github.com/flipbyte/when-condition
- Owner: flipbyte
- License: mit
- Created: 2019-02-19T09:57:42.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2022-12-09T13:15:22.000Z (over 3 years ago)
- Last Synced: 2025-10-05T19:37:09.678Z (8 months ago)
- Language: JavaScript
- Size: 2.88 MB
- Stars: 4
- Watchers: 1
- Forks: 2
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# when-condition
[Developed by Flipbyte](https://www.flipbyte.com/)
[![Build Status][build-badge]][build]
[![npm package][npm-badge]][npm]
[![Coverage Status][coveralls-badge]][coveralls]
[![license][license-badge]][license]
[![Codacy Badge][codacy-badge]][codacy]
Check conditional statements and return true/false
## Installation
```sh
npm i @flipbyte/when-condition
```
## Usage
Define your conditionals using an array with logical rule ('and' or 'or') as the first element followed by an array of comparison conditions.
General representation of a logical rule is as follows:
```js
['{your logical rule}', [{your comparison rule 1}], [{your comparison rule 2}], ...]
```
Comparison rule is an array with 3 elements:
- The comparison rule.
- The key of the object whose value needs to be compared with a condition.
- The comparison value.
General representation of a comparison rule is as follows:
```js
['{comparison rule}', '{key}', '{comparison value}']
```
## Example
Consider an object as follows:
```js
let data = {
a: 1,
b: 2,
c: {
d: 'string',
e: [{
f: 1,
g: 2
}]
}
}
```
### Single rule
#### To simply check one rule (say) data.a = 1
```js
let rule = ['is', 'a', 1]
```
or
#### Check whether data.c.e\[0\].f = 1
```js
let rule = ['is', 'c.e[0]`.f', 1]
```
### Rules with multiple comparisons
#### Check whether both data.a = 1 and data.b = 2
```js
let rule = ['and', ['is', 'a', 1], ['is', 'b', 2]]
```
#### Check whether either data.a = 1 or data.b = 2
```js
let rule = ['or', ['is', 'a', 1], ['is', 'b', 2]]
```
### Complex rules
#### Check whether (data.a = 1 and data.b = 2) or (data.b = 2 and data.c.d != 'string')
```js
let rule = ['or', ['and', ['is', 'a', 1], ['is', 'b', 2]], ['and', ['is', 'b', 2], ['is', 'c.d', 'string']]]
```
### Evaluating rules
```js
import when from 'when-condition'
when(rule, data) // => returns true or false
```
### Rules using callback
You can also pass a callback function to check the data. Which will be resolved to a promise.
It can either be a plain function or a promise
```js
when(function(data) {
return data.a !== data.b
}, data).then((result) => {
//...handle your result
})
```
## Logical rules
There are 2 types of logical rules:
- ```and``` - checks whether all the conditions evaluate to true.
- ```or``` - checks whether atleast one condition evaluates to true.
- ```not``` - returns the opposite of the evaluated comparison rule. This logical rule takes only one comparison rule.
## Comparison rules
Following are the available comparison rules:
- ```is``` - returns true if the object value strictly matches the comparison value.
- ```isOfType``` - returns true if the object value matches the specified type (Ex: string, undefined, etc.).
- ```anyOf``` - returns true if at least one of the comparison values matches the object key value. The comparison value needs to be an array.
- ```allOf``` - returns true if all the object key value matches the comparison values. The comparison value needs to be an array.
- ```gt``` - returns true if the object key value is greater than the comparison value
- ```gte``` - returns true if the object key value is greater than or equal to the comparison value
- ```lt``` - returns true if the object key value is lesser than the comparison value
- ```lte``` - returns true if the object key value is lesser than or equal to the comparison value
## License
The MIT License (MIT)
[build-badge]: https://travis-ci.org/flipbyte/when-condition.svg?branch=master
[build]: https://travis-ci.org/flipbyte/when-condition
[npm-badge]: https://img.shields.io/npm/v/@flipbyte/when-condition.svg
[npm]: https://www.npmjs.com/package/@flipbyte/when-condition
[coveralls-badge]: https://coveralls.io/repos/github/flipbyte/when-condition/badge.svg
[coveralls]: https://coveralls.io/github/flipbyte/when-condition
[license-badge]: https://badgen.now.sh/badge/license/MIT
[license]: ./LICENSE
[codacy-badge]: https://api.codacy.com/project/badge/Grade/7fdf5e97a9a1409cb2b895be5fc49633
[codacy]: https://www.codacy.com/app/flipbyte/when-condition?utm_source=github.com&utm_medium=referral&utm_content=flipbyte/when-condition&utm_campaign=Badge_Grade