kondico v0.2.1
Kondico ===
Functional conditions and compositions (uses Formi).
###Status
API Docs
Kondico exposes the Kondico
function.
Kondico(boolean, [options])
-> FunctionKondico(func, [options])
-> Function
####Kondico(boolean, options)
Defines function that returns input boolean.
Example
var isTrue = Kondico(true);
isTrue(); // ==> true
####Kondico(func, options)
Defines function that returns result of a called function.
Example
var isDefined = Kondico(function(val) { return val !== undefined; });
isDefined(640) // true
isDefined(undefined) // false
###Kondico Options
Option | Value | Description |
---|---|---|
once | Boolean | Only run function body once, cache result |
memoize | Boolean/Function | Only run function body once per input value |
####Kondico(func, { once: true })
Defines a function that runs it's body a single time, any subsequent calls will return that same value without running that function body.
Example
var hasJquery = Kondico(function() {
return typeof jQuery === 'function';
}, { once: true });
if (hasJquery()) {
$('html').addClass('has-jquery');
alert('has jquery: ' + hasJquery());
}
####Kondico(func, { memoize: true })
Defines a function that runs it's body a single time for each unique input, any subsequent calls with the same input will return the same value without running the function body.
memoize
option can be a boolean value or a hashFunction that returns an id used to cache a functions return; hashFunction will return first argument by default.
Example
var has = Kondico(function(val) {
return typeof val === 'function';
}, { memoize: true });
if (has(jQuery)) {
$('html').addClass('has-jquery');
alert('has jquery: ' + has(jQuery));
}
##Compositions (Logic Gates)
Kondico defines logic gate function for composing more complex conditions. All functions will operate on any number of arguments. not
returns an array if more than one argument is passed.
Kondico.not
Kondico.or
Kondico.and
Kondico.nor
Kondico.nand
Kondico.xor
Kondico.xnor
Example Useages
####Media Queries
var smallSize = Kondico(function(val) { return val < 720; });
var largeSize = Kondico(function(val) { return val > 1280; });
var mediumSize = Kondico.nor(smallSize, largeSize);
// example window size (960x720)
smallSize(window.innerWidth) // false
mediumSize(window.innerWidth) // true
largeSize(window.innerWidth) // false
####Feature Detection
var hasCanvas = Kondico(function() {
var elem = createElement('canvas');
return !!(elem.getContext && elem.getContext('2d'));
}, { once: true });