diff --git a/angular-underscore.js b/angular-underscore.js index 55c9f41..20d44cc 100644 --- a/angular-underscore.js +++ b/angular-underscore.js @@ -55,6 +55,14 @@ }; }]); + // simplify custome overriding on angular side + var + adapFunc = { + 'groupBy': _.memoize(function (collection, param) { + return _.groupBy(collection, param); + }) + }; + // end custom _ @@ -73,8 +81,7 @@ }); // end register angular-underscore/utils - - + // begin register angular-underscore/filters var @@ -138,7 +145,7 @@ } var - filter = _.bind(_[filterNames[0]], _), + filter = _.bind(adapFunc[filterNames[0]] ? adapFunc[filterNames[0]] : _[filterNames[0]], _), filterFactory = function() {return filter;}; _.each(filterNames, function(filterName) { @@ -153,5 +160,6 @@ }); // end register angular-underscore/filters + }(angular, _)); diff --git a/angular-underscore.min.js b/angular-underscore.min.js index 5a087b1..530017d 100644 --- a/angular-underscore.min.js +++ b/angular-underscore.min.js @@ -1 +1 @@ -(function(ng,_){"use strict";var underscoreModule=ng.module("angular-underscore",[]),utilsModule=ng.module("angular-underscore/utils",[]),filtersModule=ng.module("angular-underscore/filters",[]);function propGetterFactory(prop){return function(obj){return obj[prop]}}_._=_;_.each(["min","max","sortedIndex"],function(fnName){_[fnName]=_.wrap(_[fnName],function(fn){var args=_.toArray(arguments).slice(1);if(_.isString(args[2])){args[2]=propGetterFactory(args[2])}else if(_.isString(args[1])){args[1]=propGetterFactory(args[1])}return fn.apply(_,args)})});ng.injector(["ng"]).invoke(["$filter",function($filter){_.filter=_.select=_.wrap($filter("filter"),function(filter,obj,exp){if(!_.isArray(obj)){obj=_.toArray(obj)}return filter(obj,exp)});_.reject=function(obj,exp){if(_.isString(exp)){return _.filter(obj,"!"+exp)}var diff=_.bind(_.difference,_,obj);return diff(_.filter(obj,exp))}}]);_.each(_.methods(_),function(methodName){function register($rootScope){$rootScope[methodName]=_.bind(_[methodName],_)}_.each([underscoreModule,utilsModule,ng.module("angular-underscore/utils/"+methodName,[])],function(module){module.run(["$rootScope",register])})});var adapList=[["map","collect"],["reduce","inject","foldl"],["reduceRight","foldr"],["find","detect"],["filter","select"],"where","findWhere","reject","invoke","pluck","max","min","sortBy","groupBy","countBy","shuffle","toArray","size",["first","head","take"],"initial","last",["rest","tail","drop"],"compact","flatten","without","union","intersection","difference",["uniq","unique"],"zip","object","indexOf","lastIndexOf","sortedIndex","keys","values","pairs","invert",["functions","methods"],"pick","omit","tap","identity","uniqueId","escape","result","template"];_.each(adapList,function(filterNames){if(!_.isArray(filterNames)){filterNames=[filterNames]}var filter=_.bind(_[filterNames[0]],_),filterFactory=function(){return filter};_.each(filterNames,function(filterName){_.each([underscoreModule,filtersModule,ng.module("angular-underscore/filters/"+filterName,[])],function(module){module.filter(filterName,filterFactory)})})})})(angular,_); \ No newline at end of file +(function(n,t){"use strict";function u(n){return function(t){return t[n]}}var r=n.module("angular-underscore",[]),e=n.module("angular-underscore/utils",[]),o=n.module("angular-underscore/filters",[]),i,f;t._=t;t.each(["min","max","sortedIndex"],function(n){t[n]=t.wrap(t[n],function(n){var i=t.toArray(arguments).slice(1);return t.isString(i[2])?i[2]=u(i[2]):t.isString(i[1])&&(i[1]=u(i[1])),n.apply(t,i)})});n.injector(["ng"]).invoke(["$filter",function(n){t.filter=t.select=t.wrap(n("filter"),function(n,i,r,u){return t.isArray(i)||(i=t.toArray(i)),n(i,r,u)});t.reject=function(n,i){if(t.isString(i))return t.filter(n,"!"+i);var r=t.bind(t.difference,t,n);return r(t.filter(n,i))}}]);i={groupBy:t.memoize(function(n,i){return t.groupBy(n,i)})};t.each(t.methods(t),function(i){function u(n){n[i]=t.bind(t[i],t)}t.each([r,e,n.module("angular-underscore/utils/"+i,[])],function(n){n.run(["$rootScope",u])})});f=[["map","collect"],["reduce","inject","foldl"],["reduceRight","foldr"],["find","detect"],["filter","select"],"where","findWhere","reject","invoke","pluck","max","min","sortBy","groupBy","indexBy","countBy","shuffle","sample","toArray","size",["first","head","take"],"initial","last",["rest","tail","drop"],"compact","flatten","without","partition","union","intersection","difference",["uniq","unique"],"zip","object","indexOf","lastIndexOf","sortedIndex","keys","values","pairs","invert",["functions","methods"],"pick","omit","tap","identity","uniqueId","escape","unescape","result","template"];t.each(f,function(u){t.isArray(u)||(u=[u]);var f=t.bind(i[u[0]]?i[u[0]]:t[u[0]],t),e=function(){return f};t.each(u,function(i){t.each([r,o,n.module("angular-underscore/filters/"+i,[])],function(n){n.filter(i,e)})})})})(angular,_); \ No newline at end of file diff --git a/angular-underscore.min.js.map b/angular-underscore.min.js.map new file mode 100644 index 0000000..c6e4f5e --- /dev/null +++ b/angular-underscore.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular-underscore.min.js", +"lineCount":1, +"mappings":"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", +"sources":["angular-underscore.js"], +"names":["ng","_","propGetterFactory","prop","obj","underscoreModule","module","utilsModule","filtersModule","adapFunc","adapList","each","fnName","wrap","fn","args","toArray","arguments","slice","isString","apply","injector","invoke","$filter","filter","select","exp","comparator","isArray","reject","_.reject","diff","bind","difference","memoize","collection","param","groupBy","methods","methodName","register","$rootScope","run","filterNames","filterFactory","filterName","angular"] +}