Sha256: 375c981f019441e8aa7c081d38a4747a06f1be1fc85d8b341db7416e583c80c9

Contents?: true

Size: 643 Bytes

Versions: 33

Compression:

Stored size: 643 Bytes

Contents

/** Wraps a value in a function. If given a function, returns it as-is. */
const wrap = x => typeof x === 'function' ? x : () => x

/** Returns a predicate that returns true if all arguments are true or evaluate to true for the given input. */
const and = (...fs) => (...args) =>
  fs.length === 0 || (
    !!wrap(fs[0])(...args) &&
    and(...fs.slice(1))(...args)
  )

/** Returns a predicate that returns true if at least one argument is true or evaluates to true for the given input. */
const or = (...fs) => (...args) =>
  fs.length > 0 && (
    !!wrap(fs[0])(...args) ||
    or(...fs.slice(1))(...args)
  )

module.exports = { and, or }

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
immosquare-cleaner-0.1.60 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.59 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.58 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.57 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.56 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.55 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.54 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.53 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.52 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.51 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.50 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.49 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.48 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.47 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.46 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.45 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.44 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.43 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.42 node_modules/fp-and-or/index.js
immosquare-cleaner-0.1.41 node_modules/fp-and-or/index.js