API Docs for: 0.0.0
Show:

File: src/index.js

//     Containers
//     (c) simonfan
//     Containers is licensed under the MIT terms.

/**
 * AMD and CJS module.
 *
 * @module Containers
 */

/* jshint ignore:start */
if (typeof define !== 'function') { var define = require('amdefine')(module) }
/* jshint ignore:end */

define(["lodash"], function (Lodash) {
	'use strict';

	function containsAll(container, contained) {
		return _.all(contained, function (val) {
			return _.contains(container, val);
		});
	}

	function containsAny(container, contained) {
		return _.any(contained, function (val) {
			return _.contains(container, val);
		});
	}

	function exclusiveWithin(boundaries, item) {
		return boundaries[0] < item && item < boundaries[1];
	}

	function inclusiveWithin(boundaries, item) {
		return boundaries[0] <= item && item <= boundaries[1];
	}

	function within(boundaries, item, exclusive) {
		// determine which operator to use.
		var operator = exclusive ? exclusiveWithin : inclusiveWithin;

		// curry operator
		operator = _.partial(operator, boundaries);

		return _.isArray(item) ? _.every(item, operator) : operator(item);
	}

	return {
		containsAll: containsAll,
		containsAny: containsAny,
		exclusiveWithin: exclusiveWithin,
		inclusiveWithin: inclusiveWithin,
		within: within
	};
});