/* automatically generated by JSCoverage - do not edit */
if (typeof _$jscoverage === 'undefined') _$jscoverage = {};
if (! _$jscoverage['base/functions.js']) {
  _$jscoverage['base/functions.js'] = [];
  _$jscoverage['base/functions.js'][2] = 0;
  _$jscoverage['base/functions.js'][10] = 0;
  _$jscoverage['base/functions.js'][11] = 0;
  _$jscoverage['base/functions.js'][23] = 0;
  _$jscoverage['base/functions.js'][24] = 0;
  _$jscoverage['base/functions.js'][25] = 0;
  _$jscoverage['base/functions.js'][26] = 0;
  _$jscoverage['base/functions.js'][28] = 0;
  _$jscoverage['base/functions.js'][29] = 0;
  _$jscoverage['base/functions.js'][30] = 0;
  _$jscoverage['base/functions.js'][31] = 0;
  _$jscoverage['base/functions.js'][34] = 0;
  _$jscoverage['base/functions.js'][47] = 0;
  _$jscoverage['base/functions.js'][48] = 0;
  _$jscoverage['base/functions.js'][49] = 0;
  _$jscoverage['base/functions.js'][50] = 0;
  _$jscoverage['base/functions.js'][51] = 0;
  _$jscoverage['base/functions.js'][52] = 0;
  _$jscoverage['base/functions.js'][55] = 0;
  _$jscoverage['base/functions.js'][59] = 0;
  _$jscoverage['base/functions.js'][60] = 0;
  _$jscoverage['base/functions.js'][61] = 0;
  _$jscoverage['base/functions.js'][62] = 0;
  _$jscoverage['base/functions.js'][63] = 0;
  _$jscoverage['base/functions.js'][90] = 0;
  _$jscoverage['base/functions.js'][91] = 0;
  _$jscoverage['base/functions.js'][92] = 0;
  _$jscoverage['base/functions.js'][93] = 0;
  _$jscoverage['base/functions.js'][95] = 0;
  _$jscoverage['base/functions.js'][97] = 0;
  _$jscoverage['base/functions.js'][98] = 0;
  _$jscoverage['base/functions.js'][99] = 0;
  _$jscoverage['base/functions.js'][100] = 0;
  _$jscoverage['base/functions.js'][103] = 0;
}
_$jscoverage['base/functions.js'][2]++;
var comb = exports;
_$jscoverage['base/functions.js'][10]++;
comb.isFunction = (function (obj) {
  _$jscoverage['base/functions.js'][11]++;
  return typeof obj == "function";
});
_$jscoverage['base/functions.js'][23]++;
comb.hitch = (function (scope, method, args) {
  _$jscoverage['base/functions.js'][24]++;
  var args = Array.prototype.slice.call(arguments).slice(2);
  _$jscoverage['base/functions.js'][25]++;
  if (typeof method == "string") {
    _$jscoverage['base/functions.js'][26]++;
    method = scope[method];
  }
  _$jscoverage['base/functions.js'][28]++;
  if (method) {
    _$jscoverage['base/functions.js'][29]++;
    return (function () {
  _$jscoverage['base/functions.js'][30]++;
  var scopeArgs = args.concat(Array.prototype.slice.call(arguments));
  _$jscoverage['base/functions.js'][31]++;
  return method.apply(scope, scopeArgs);
});
  }
  else {
    _$jscoverage['base/functions.js'][34]++;
    throw new Error(method + "Method not defined");
  }
});
_$jscoverage['base/functions.js'][47]++;
comb.partial = (function (method, args) {
  _$jscoverage['base/functions.js'][48]++;
  var args = Array.prototype.slice.call(arguments).slice(1);
  _$jscoverage['base/functions.js'][49]++;
  if (typeof method == "function") {
    _$jscoverage['base/functions.js'][50]++;
    return (function () {
  _$jscoverage['base/functions.js'][51]++;
  var scopeArgs = args.concat(Array.prototype.slice.call(arguments));
  _$jscoverage['base/functions.js'][52]++;
  return method.apply(null, scopeArgs);
});
  }
  else {
    _$jscoverage['base/functions.js'][55]++;
    throw new Error(method + "Method not defined");
  }
});
_$jscoverage['base/functions.js'][59]++;
var curry = (function (f, execute) {
  _$jscoverage['base/functions.js'][60]++;
  return (function (arg) {
  _$jscoverage['base/functions.js'][61]++;
  var args = Array.prototype.slice.call(arguments);
  _$jscoverage['base/functions.js'][62]++;
  return execute? f.apply(this, arguments): (function (arg) {
  _$jscoverage['base/functions.js'][63]++;
  return f.apply(this, args.concat(Array.prototype.slice.call(arguments)));
});
});
});
_$jscoverage['base/functions.js'][90]++;
comb.curry = (function (depth, cb, scope) {
  _$jscoverage['base/functions.js'][91]++;
  var f;
  _$jscoverage['base/functions.js'][92]++;
  if (scope) {
    _$jscoverage['base/functions.js'][93]++;
    f = comb.hitch(scope, cb);
  }
  else {
    _$jscoverage['base/functions.js'][95]++;
    f = cb;
  }
  _$jscoverage['base/functions.js'][97]++;
  if (depth) {
    _$jscoverage['base/functions.js'][98]++;
    var len = depth - 1;
    _$jscoverage['base/functions.js'][99]++;
    for (var i = len; i >= 0; i--) {
      _$jscoverage['base/functions.js'][100]++;
      f = curry(f, i == len);
}
  }
  _$jscoverage['base/functions.js'][103]++;
  return f;
});
_$jscoverage['base/functions.js'].source = ["","var comb = exports;","","/**"," * Determins if something is a function"," * @param {Anything} obj the thing to test if it is a function"," *"," * @returns {Boolean} true if the obj is a function false otherwise"," */","comb.isFunction = function(obj) {","    return typeof obj == \"function\";","};","","/**"," * Binds a method to a particular scope"," *"," * @param {Object} scope the scope to bind the callback to"," * @param {String|Function} method the method to callback"," * @param {Anything} [args] optional args to pass to the callback"," *"," * @returns {Function} the hitched function"," */","comb.hitch = function(scope, method, args) {","    var args = Array.prototype.slice.call(arguments).slice(2);","    if (typeof method == \"string\") {","        method = scope[method];","    }","    if (method) {","        return function() {","            var scopeArgs = args.concat(Array.prototype.slice.call(arguments));","            return method.apply(scope, scopeArgs);","        };","    } else {","        throw new Error(method + \"Method not defined\");","    }","};","","/**"," * Allows the passing of additional arguments to a function when it is called"," * especially useful for callbacks that you want to provide additional parameters to"," *"," * @param {String|Function} method the method to callback"," * @param {Anything} [args] variable number of arguments to pass"," *"," * @returns {Function} partially hitched function"," */","comb.partial = function(method, args) {","    var args = Array.prototype.slice.call(arguments).slice(1);","    if (typeof method == \"function\") {","        return function() {","            var scopeArgs = args.concat(Array.prototype.slice.call(arguments));","            return method.apply(null, scopeArgs);","        };","    } else {","        throw new Error(method + \"Method not defined\");","    }","};","","var curry = function(f, execute) {","    return function(arg) {","        var args = Array.prototype.slice.call(arguments);","        return execute ? f.apply(this, arguments) : function(arg) {","            return f.apply(this, args.concat(Array.prototype.slice.call(arguments)));","        };","    }","};","","/**"," * Curries a function"," * @example"," * var curried = comb.curry(4, function(a,b,c,d){"," *     return [a,b,c,d].join(\",\");"," * }"," *  curried(\"a\");"," *  curried(\"b\");"," *  curried(\"c\");"," *  curried(\"d\") =&gt; \"a,b,c,d\""," *"," *  //OR"," *"," *  curried(\"a\")(\"b\")(\"c\")(\"d\") =&gt; \"a,b,c,d\""," *"," *"," * @param {Number} depth the number of args you expect"," * @param {Function} cb the function to call once all args are gathered"," * @param {Object} [scope] what scope to call the function in"," *"," * @returns {Function} the curried version of the function"," * */","comb.curry = function(depth, cb, scope) {","    var f;","    if (scope) {","        f = comb.hitch(scope, cb);","    } else {","        f = cb;","    }","    if (depth) {","        var len = depth - 1;","        for (var i = len; i &gt;= 0; i--) {","            f = curry(f, i == len);","        }","    }","    return f;","};",""];
