Overview
Logic function about predicate
Table of contents
and (function)
Concat Predicate with and
Signature
export const and = <A>(p1: Predicate<A>, p2: Predicate<A>): Predicate<A> => ...
Example
import { and } from 'macoolka-predicate'
interface A {
name: string
age: number
}
const as: A[] = [{ name: 'a1', age: 20 }, { name: 'a2', age: 20 }, { name: 'a3', age: 28 }]
const isName = (a: A) => a.name === 'a1'
const isAge = (a: A) => a.age === 20
expect(as.filter(and(isName, isAge)).length).toEqual(1)
Added in v0.2.0
foldAND (function)
fold Predicate with and
Signature
export const foldAND = <A>(p: Array<Predicate<A>>): Predicate<A> => ...
Example
import { foldAND } from 'macoolka-predicate'
interface A {
name: string
age: number
}
const as: A[] = [{ name: 'a1', age: 20 }, { name: 'a2', age: 20 }, { name: 'a3', age: 28 }]
const isName = (a: A) => a.name === 'a1'
const isAge = (a: A) => a.age === 20
expect(as.filter(foldAND([isName, isAge])).length).toEqual(1)
Added in v0.2.0
foldOR (function)
fold Predicate with or
Signature
export const foldOR = <A>(p: Array<Predicate<A>>): Predicate<A> => ...
Example
import { foldOR } from 'macoolka-predicate'
interface A {
name: string
age: number
}
const as: A[] = [{ name: 'a1', age: 20 }, { name: 'a2', age: 20 }, { name: 'a3', age: 28 }]
const isName = (a: A) => a.name === 'a1'
const isAge = (a: A) => a.age === 20
expect(as.filter(foldOR([isName, isAge])).length).toEqual(2)
Added in v0.2.0
not (function)
not a Predicate
Example
import { and } from 'macoolka-predicate'
interface A {
name: string
age: number
}
const as: A[] = [{ name: 'a1', age: 20 }, { name: 'a2', age: 20 }, { name: 'a3', age: 28 }]
const isName = (a: A) => a.name === 'a1'
const isAge = (a: A) => a.age === 20
expect(as.filter(and(isName, isAge)).length).toEqual(1)
Added in v0.2.0
or (function)
Concat Predicate with or
Example
import { or } from 'macoolka-predicate'
interface A {
name: string
age: number
}
const as: A[] = [{ name: 'a1', age: 20 }, { name: 'a2', age: 20 }, { name: 'a3', age: 28 }]
const isName = (a: A) => a.name === 'a1'
const isAge = (a: A) => a.age === 20
expect(as.filter(or(isName, isAge)).length).toEqual(2)
Added in v0.2.0