kounderscore
Version:
Knockout Underscore integration.
1 lines • 2.22 kB
JavaScript
!function(a,b){"function"==typeof define&&define.amd?define(["exports","knockout","underscore"],b):"object"==typeof exports?b(exports,require("knockout"),require("underscore")):(a.ko_={},b(a.ko_,a.ko,a._))}(this,function(a,b,c){function d(a,b){return function(){var d=this();return b&&!c.isArray(d)&&(d=c.values(d)),g.unshift.call(arguments,d),c[a].apply(c,arguments)}}function e(a,c,d){return function(){var e=arguments,f=b.computed({read:function(){return this[a].apply(this,e)},pure:c||!1,owner:this});return d&&(f=f.extend({underscore:"collection"})),f}}function f(c,d){"object"===d&&b.utils.extend(c,a.objects),b.utils.extend(c,a.collections)}var g=Array.prototype;c.mixin({sum:function(a,b,d){var e=0;return c.each(a,function(){e+=b.apply(d,arguments)}),e},average:function(a,b,d){return 0===a.length?0:c.sum(a,b,d)/a.length},count:function(a,b,d){return b?c.filter(a,b,d).length:c.size(a)},filterMap:function(a,b,d){var e=[];return c.each(a,function(){var a=b.apply(d,arguments);a&&e.push(a)}),e},index:function(a,b,d){var e=-1;return c.find(a,function(a,c){return b.apply(d,arguments)===!0?(e=c,!0):!1}),e},partialEnd:function(a){for(var b=[],c=1;c<arguments.length;c++)b[c-1]=arguments[c];return function(){return a.apply(this,g.slice.call(arguments).concat(b))}}}),a.objects=function(){var a={};return c.each(["keys","values"],function(b){a[b]=d(b),a["_"+b]=e(b,!0,!0),a["__"+b]=e(b,!1,!0)}),c.each(["clone","isEmpty"],function(b){a[b]=d(b),a["_"+b]=e(b,!0),a["__"+b]=e(b,!1)}),a}(),a.collections=function(){var a={};return c.each(["map","filterMap","filter","reject","sortBy","toArray"],function(b){a[b]=d(b),a["_"+b]=e(b,!0,!0),a["__"+b]=e(b,!1,!0)}),c.each(["each","reduce","find","sum","average","all","any","contains","min","max","groupBy","count","index","size"],function(b){a[b]=d(b),a["_"+b]=e(b,!0),a["__"+b]=e(b,!1)}),c.each(["initial","rest","compact","flatten","without","union","intersection","difference","uniq"],function(b){a[b]=d(b,!0),a["_"+b]=e(b,!0,!0),a["__"+b]=e(b,!1,!0)}),c.each(["first","last","zip","indexOf","lastIndexOf"],function(b){a[b]=d(b,!0),a["_"+b]=e(b,!0),a["__"+b]=e(b,!1)}),a}(),a.addTo=f,f(b.observableArray.fn),b.extenders.underscore=function(a,b){return f(a,b),a}});