An open API service indexing awesome lists of open source software.

https://github.com/pirxpilot/bounds

Mixin for checking if value is inside or outside of bounds
https://github.com/pirxpilot/bounds

Last synced: about 1 year ago
JSON representation

Mixin for checking if value is inside or outside of bounds

Awesome Lists containing this project

README

          

[![NPM version][npm-image]][npm-url]
[![Build Status][build-image]][build-url]

# bounds

Mixin for checking if value is inside or outside of bounds You can use `Bounds` for any objects for
which you can define compare function (dates, vectors etc.)

In addition to regular range checking `Bounds` supports reversed ranges: if
min is bigger than max it considers values outside ot the max, min range as valid.

## Installation

$ npm install bounds

## API

### .compare(fn)

Sets comparison function. `fn` should take 2 arguments and behave like sort comparison function i.e.
return 0 if items are equal, -1 if the first is smaller than the second, 1 is the first is bigger
than the second.

### .min(v)

Set lower bound (inclusive) to `v`

### .max(v)

Set upper bound (inclusive) to `v`

### .in(v)

Return `true` if `v` is in bounds i.e. `min <= v <= max`

### .out(v)

Return `true` if `v` is outside of bounds i.e. `v < min` OR `max < v`

### .before(v)

Return `true` if `v < min`

### .after(v)

Return `true` if `v > max`

### .valid(v)

For regular ranges it's the same as `in`. For reversed ranges it considers as valid values that are
outside of the range (it's still inclusive so `min` and `max` are still considered valid)

### .restrict(v)

Returns the passed value for `valid` values. For invalid values returns the closest boundary (`min`
or `max`). `restrict` only works for reverse ranges if `distance` function is defined.

### .distance(fn)

Optional distance function: it's only used when calculating proper restriction for reversed ranges.
If restricted value is closed to `min` than to `max`, then the `min` is returned.

## License

MIT

[npm-url]: https://npmjs.org/package/bounds
[npm-image]: https://img.shields.io/npm/v/bounds

[build-url]: https://github.com/pirxpilot/bounds/actions/workflows/check.yaml
[build-image]: https://img.shields.io/github/actions/workflow/status/pirxpilot/bounds/check.yaml?branch=main