diff options
| author | Philipp Tanlak <philipp.tanlak@gmail.com> | 2025-11-24 20:54:57 +0100 |
|---|---|---|
| committer | Philipp Tanlak <philipp.tanlak@gmail.com> | 2025-11-24 20:57:48 +0100 |
| commit | b1e2c8fd5cb5dfa46bc440a12eafaf56cd844b1c (patch) | |
| tree | 49d360fd6cbc6a2754efe93524ac47ff0fbe0f7d /node_modules/normalize-range/index.js | |
Docs
Diffstat (limited to 'node_modules/normalize-range/index.js')
| -rw-r--r-- | node_modules/normalize-range/index.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/node_modules/normalize-range/index.js b/node_modules/normalize-range/index.js new file mode 100644 index 0000000..d5a2ea8 --- /dev/null +++ b/node_modules/normalize-range/index.js @@ -0,0 +1,54 @@ +'use strict'; +module.exports = { + wrap: wrapRange, + limit: limitRange, + validate: validateRange, + test: testRange, + curry: curry, + name: name +}; + +function wrapRange(min, max, value) { + var maxLessMin = max - min; + return ((value - min) % maxLessMin + maxLessMin) % maxLessMin + min; +} + +function limitRange(min, max, value) { + return Math.max(min, Math.min(max, value)); +} + +function validateRange(min, max, value, minExclusive, maxExclusive) { + if (!testRange(min, max, value, minExclusive, maxExclusive)) { + throw new Error(value + ' is outside of range [' + min + ',' + max + ')'); + } + return value; +} + +function testRange(min, max, value, minExclusive, maxExclusive) { + return !( + value < min || + value > max || + (maxExclusive && (value === max)) || + (minExclusive && (value === min)) + ); +} + +function name(min, max, minExcl, maxExcl) { + return (minExcl ? '(' : '[') + min + ',' + max + (maxExcl ? ')' : ']'); +} + +function curry(min, max, minExclusive, maxExclusive) { + var boundNameFn = name.bind(null, min, max, minExclusive, maxExclusive); + return { + wrap: wrapRange.bind(null, min, max), + limit: limitRange.bind(null, min, max), + validate: function(value) { + return validateRange(min, max, value, minExclusive, maxExclusive); + }, + test: function(value) { + return testRange(min, max, value, minExclusive, maxExclusive); + }, + toString: boundNameFn, + name: boundNameFn + }; +} |