Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vitorluizc/cullender
Search data and create complex filters by compose filter functions.
https://github.com/vitorluizc/cullender
compose cull cullender filter filter-data filter-lists filter-plugin filterable filtering filterlist filters fp functional-programming javascript search searching
Last synced: 3 months ago
JSON representation
Search data and create complex filters by compose filter functions.
- Host: GitHub
- URL: https://github.com/vitorluizc/cullender
- Owner: VitorLuizC
- License: mit
- Created: 2017-10-16T13:27:07.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-09-06T20:48:35.000Z (over 6 years ago)
- Last Synced: 2024-08-09T10:02:38.354Z (6 months ago)
- Topics: compose, cull, cullender, filter, filter-data, filter-lists, filter-plugin, filterable, filtering, filterlist, filters, fp, functional-programming, javascript, search, searching
- Language: JavaScript
- Homepage:
- Size: 190 KB
- Stars: 10
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Cullender
[![Build Status][ci-badge]][ci]
A simple and composable way to filter data.
## Installation
Cullender is published on NPM registry. It's easy to integrate into your's
current project environment, you have just to install like the example below and
`import`/`require` cullender functions to filter something.```bash
npm install cullender
```This is a pretty module to convince you to use cullender to filter your stuff.
```javascript
import { cull, filters } from 'cullender'// ...
const latest = cull(
[ ...users ],
filters.truthy(),
(user) => getTime(user.created) > getTime() - 7 * DAY
)
```## API
### `cull: (Iterable, ...filters) => Array` - Filter data with filter functions
#### Example
```js
import { cull } from 'cullender'const isAdmin = (user) => user.role === 'admin'
cull(
[ ...users ],
(user) => user.isActive,
isAdmin
)
```### `create: ('AND'|'OR', ...filters) => boolean` - Creates a filter function
#### Example
```js
import { create } from 'cullender'const isAdmin = create(
'AND',
(user) => user.isActive,
(user) => user.role === 'admin'
)[ ...users ].filter(isAdmin)
// You could also use *cull* function.
cull(users, isAdmin)
```### `filters: Object. filter>` - Some useful filter functions
### `filters.truthy: ((T, number, Array) => *) => filter` - Filter truthy
Check if value, or function returned value is truthy.
#### Example
```js
import { cull, filters } from 'cullender'cull(
users,
filters.truthy(user => user.id)
)
```### `filters.into: (Iterable., (T, number, Array) => *): filter` - Filter into
Check if value, or function returned value is included on List.
#### Example
```js
import { cull, filters } from 'cullender'const isAuthorized = filters.into(['admin', 'manager', 'executive'], user => user.role)
const authorized = cull(users, isAuthorized)
```### `filters.search: (string, (T, number, Array) => string): filter` - Search terms
Check if value, or function returned value matches search terms.
#### Example
```js
import { cull, filters } from 'cullender'const terms = document.querySelector('input[type="search"]').value
const results = cull(
users,
(terms, user => [user.name, user.email]) // search into multiple values with
// an array you can use an plan
// string value either
)
```### `filters.not: (filter) => filter` - Not filter
Check if value, or function returned value matches search terms.
#### Example
```js
import { cull, filters } from 'cullender'const withoutEmailUsers = cull(
users,
filters.not(filters.truthy(user => user.email))
)
```## License
Licensed under MIT License. You can see it [here][license].
[license]: ./LICENSE
[ci]: https://travis-ci.org/VitorLuizC/cullender
[ci-badge]: https://travis-ci.org/VitorLuizC/cullender.svg?branch=master