A simple and composable way to filter data.
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.
npm install cullender
This is a pretty module to convince you to use cullender to filter your stuff.
import { cull, filters } from 'cullender'
// ...
const latest = cull(
[ ...users ],
filters.truthy(),
(user) => getTime(user.created) > getTime() - 7 * DAY
)
import { cull } from 'cullender'
const isAdmin = (user) => user.role === 'admin'
cull(
[ ...users ],
(user) => user.isActive,
isAdmin
)
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)
Check if value, or function returned value is truthy.
import { cull, filters } from 'cullender'
cull(
users,
filters.truthy(user => user.id)
)
Check if value, or function returned value is included on List.
import { cull, filters } from 'cullender'
const isAuthorized = filters.into(['admin', 'manager', 'executive'], user => user.role)
const authorized = cull(users, isAuthorized)
Check if value, or function returned value matches search terms.
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
)
Check if value, or function returned value matches search terms.
import { cull, filters } from 'cullender'
const withoutEmailUsers = cull(
users,
filters.not(filters.truthy(user => user.email))
)
Licensed under MIT License. You can see it here.