https://github.com/shalldie/lessif
Conbination condition with less if. 用更少的代码实现组合判断。
https://github.com/shalldie/lessif
condition if javascript
Last synced: about 2 months ago
JSON representation
Conbination condition with less if. 用更少的代码实现组合判断。
- Host: GitHub
- URL: https://github.com/shalldie/lessif
- Owner: shalldie
- License: mit
- Created: 2022-01-21T09:35:12.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-02-15T04:09:18.000Z (over 4 years ago)
- Last Synced: 2025-02-20T08:12:39.324Z (over 1 year ago)
- Topics: condition, if, javascript
- Language: TypeScript
- Homepage:
- Size: 42 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# lessif
Conbination condition with less if. 用更少的代码实现组合判断。
[![npm][lessif-icon]][lessif-npm]
[](https://github.com/shalldie/lessif/actions)
[](https://github.com/shalldie/lessif)
[English](./README.md) | [中文](./README.zh-CN.md)
## Installation
npm install lessif --save
## Usage & Example
### and
Whether all provided rules pass.
```ts
and(true, true, true)(true); // true
```
```ts
interface IPerson {
name: string;
age: number;
sex: 1 | 0;
}
const person: IPerson = {
name: 'tom',
age: 12,
sex: 1
};
const predicate = and(
// true
n => n.name === 'tom',
and(
// true
n => n.name.length === 3,
and(
// true
and(
// true
and(n => n.age === 12)
)
)
),
// true
{
sex: 1
}
);
predicate(person); // true
```
### or
Whether at least one provided rule passes.
```ts
or(true, false, false)(true); // true
```
```ts
interface IPerson {
name: string;
age: number;
sex: 1 | 0;
}
const person: IPerson = {
name: 'tom',
age: 12,
sex: 1
};
const predicate = or(
// false
n => n.name === 'lily',
// false
or(
n => n.age === 23,
n => n.age > 23
),
// true
{
name: 'tom'
}
);
predicate(person); // true
```
### none
Whether none of provided rules pass.
```ts
none(false, false, false)(true); // true
```
```ts
interface IPerson {
name: string;
age: number;
sex: 1 | 0;
}
const person: IPerson = {
name: 'tom',
age: 12,
sex: 1
};
const predicate = or(
// false
n => n.name === 'lily',
// false
or(
n => n.age === 23,
n => n.age > 23
),
// true
{
name: 'tom'
}
);
predicate(person); // false
```
### and&or&none
Put them together!
```ts
interface IPerson {
name: string;
age: number;
sex: 1 | 0;
}
const person: IPerson = {
name: 'tom',
age: 12,
sex: 1
};
const predicate = and(
// true
and({ name: 'tom' }),
// true
or(
n => n.age === 23,
n => n.age < 23
),
// true
none({
sex: 0
})
);
predicate(person); // true
```
## License
MIT
[lessif-icon]: https://img.shields.io/npm/v/lessif.svg?logo=npm&style=flat-square
[lessif-npm]: https://www.npmjs.com/package/lessif