diff --git a/lib/client/input.js b/lib/client/input.js index 27935a70..251f0b26 100644 --- a/lib/client/input.js +++ b/lib/client/input.js @@ -33,9 +33,10 @@ function convert(config) { var result = clone(config), array = Object.keys(result), - isBool = isType.bind(null, result, 'boolean'); + isBool = partial(isType, result, 'boolean'); - mapCondition(array, isBool) + array + .filter(isBool) .forEach(function(name) { var item = result[name]; @@ -55,6 +56,20 @@ return result; } + function partial(fn) { + var i, + bind = Function.prototype.bind, + n = arguments.length, + args = Array(n-1); + + args[0] = null; + + for (i = 1; i < n; i++) + args[i] = arguments[i]; + + return bind.apply(fn, args); + } + function isType(object, type, name) { var current = typeof object[name], is = current === type; @@ -62,19 +77,6 @@ return is; } - function mapCondition(array, fn) { - var result = []; - - array.forEach(function(item) { - var is = fn(item); - - if (is) - result.push(item); - }); - - return result; - } - function setState(state) { var ret = '';