signal/lib/comparasion.js

import { val } from './core'

/**
 * > Comparasion operation on signals
 *
 * @module signal/comparasion
 */

/**
 * Returns 1 if two inputs are __equal__, otherwise returns 0.
 * @name eq
 * @function
 * @memberof module:signal/comparasion
 */
export const eq = (a, b) => () => val(a) === val(b) ? 1 : 0

/**
 * Returns 1 if a is __greater__ than b, otherwise returns 0.
 * @name gt
 * @function
 * @memberof module:signal/comparasion
 */
export const gt = (a, b) => () => val(a) > val(b) ? 1 : 0

/**
 * Returns 1 if a is __greater or equal__ than b, otherwise returns 0.
 * @name gte
 * @function
 * @memberof module:signal/comparasion
 */
export const gte = (a, b) => () => val(a) >= val(b) ? 1 : 0

/**
 * Returns `a` if `a` is __greater__ than `b`, otherwise returns 0.
 * @name gtp
 * @function
 * @memberof module:signal/comparasion
 */
export const gtp = (a, b) => () => {
  const a = val(a)
  return a > val(b) ? a : 0
}

/**
 * Returns 1 if a is __less__ than b, otherwise returns 0.
 * @name lt
 * @function
 * @memberof module:signal/comparasion
 */
export const lt = (a, b) => () => val(a) < val(b) ? 1 : 0

/**
 * Returns 1 if a is __less or equal__ than b, otherwise returns 0.
 * @name lte
 * @function
 * @memberof module:signal/comparasion
 */
export const lte = (a, b) => () => val(a) <= val(b) ? 1 : 0

/**
 * Returns `a` if `a` is __less__ than `b`, otherwise returns 0.
 * @name ltp
 * @function
 * @memberof module:signal/comparasion
 */
export const ltp = (a, b) => () => {
  const a = val(a)
  return a < val(b) ? a : 0
}