|
@@ -1,97 +1,111 @@
|
|
|
-module.exports = function(){
|
|
|
+function create_tool(){
|
|
|
|
|
|
+ var async = require("async");
|
|
|
+ var actions = {};
|
|
|
+ var filters = {};
|
|
|
|
|
|
- var async = require("async");
|
|
|
- var actions = {};
|
|
|
- var filters = {};
|
|
|
+ function add_action(actionname, actionfunction, priority) {
|
|
|
+ var prio = priority || 10;
|
|
|
+ actions[actionname] = actions[actionname] || [];
|
|
|
+ actions[actionname].push([prio, actionfunction]);
|
|
|
+ actions[actionname].sort(function(a, b) {
|
|
|
+ return a[0] > b[0] ? 1 : a[0] < b[0] ? -1 : 0;
|
|
|
+ })
|
|
|
+ }
|
|
|
+ var actions_applied = {};
|
|
|
|
|
|
- function add_action(actionname, actionfunction, priority) {
|
|
|
- var prio = priority || 10;
|
|
|
- actions[actionname] = actions[actionname] || [];
|
|
|
- actions[actionname].push([prio, actionfunction]);
|
|
|
- actions[actionname].sort(function(a, b) {
|
|
|
- return a[0] > b[0] ? 1 : a[0] < b[0] ? -1 : 0;
|
|
|
- })
|
|
|
- }
|
|
|
- var actions_applied = {};
|
|
|
-function do_action(actionname) {
|
|
|
- actions_applied[actionname] = (actions_applied[actionname] || 0) + 1;
|
|
|
- var args = Array.prototype.slice.apply(arguments, [1]);
|
|
|
- if (actions[actionname]) {
|
|
|
- return actions[actionname].map(function(arr) {
|
|
|
- var pri = arr[0];
|
|
|
- var func = arr[1];
|
|
|
- return func.apply({}, args);
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
- function add_filters (filtername, filterfunction, priority, filterinstancenamed) {
|
|
|
- filters[filtername] = filters[filtername] || [];
|
|
|
- if (typeof(priority) === "string" && typeof(filterinstancenamed) === "undefined") {
|
|
|
- filterinstancenamed = priority;
|
|
|
- priority = 10;
|
|
|
- }
|
|
|
- if (filterinstancenamed) {
|
|
|
- var cindex = filters[filtername].length;
|
|
|
- filters[filtername].map(function(filter, index) {
|
|
|
- if (filter[2] === filterinstancenamed) {
|
|
|
- cindex = index;
|
|
|
- }
|
|
|
- })
|
|
|
- filters[filtername][cindex] = [priority || 0, filterfunction, filterinstancenamed];
|
|
|
- } else {
|
|
|
- var cename = "";
|
|
|
- filters[filtername].push([priority || 0, filterfunction, cename]);
|
|
|
- }
|
|
|
- filters[filtername].sort(function(a, b) {
|
|
|
- return a[0] > b[0] ? 1 : a[0] < b[0] ? -1 : 0;
|
|
|
- })
|
|
|
- }
|
|
|
- var filters_applied = {};
|
|
|
- function apply_filters(filtername, val) {
|
|
|
- var restargs = Array.prototype.slice.call(arguments, 2);
|
|
|
- filters_applied[filtername] = (filters_applied[filtername] || 0) + 1;
|
|
|
- // var oval = $lib._.clone(val);
|
|
|
- //$lib.log("apply_filters", filtername, "M:" + (filters[filtername] || []).length);
|
|
|
- if (filters[filtername]) {
|
|
|
- var index = 0,
|
|
|
- mindex = filters[filtername].length;
|
|
|
- while (index < mindex) {
|
|
|
- val = filters[filtername][index][1].apply(filters[filtername][index][1], [val].concat(restargs));
|
|
|
- index++;
|
|
|
- }
|
|
|
- }
|
|
|
- return val;
|
|
|
- }
|
|
|
-function apply_filters_map(filtername) {
|
|
|
- var restargs = Array.prototype.slice.call(arguments, 1);
|
|
|
- var cb = restargs.pop();
|
|
|
- var arr = [];
|
|
|
- if (typeof(filtername) === "object") {
|
|
|
- filtername.map(function(name) {
|
|
|
- arr = arr.concat(apply_filters(name, []));
|
|
|
- })
|
|
|
- } else {
|
|
|
- arr = apply_filters(filtername, []);
|
|
|
- }
|
|
|
- console.log("AAAAAAAAAAAAAAAAAAAAAAAAA",filtername);
|
|
|
- console.log("AAAAAAAAAAAAAAAAAAAAAAAAA",arr);
|
|
|
- console.log("AAAAAAAAAAAAAAAAAAAAAAAAA",restargs);
|
|
|
-
|
|
|
- async.mapSeries(arr, function(func, next) {
|
|
|
- func.apply(func, restargs.concat(next));
|
|
|
- }, cb)
|
|
|
- }
|
|
|
+ function do_action(actionname) {
|
|
|
+ actions_applied[actionname] = (actions_applied[actionname] || 0) + 1;
|
|
|
+ var args = Array.prototype.slice.apply(arguments, [1]);
|
|
|
+ if (actions[actionname]) {
|
|
|
+ return actions[actionname].map(function(arr) {
|
|
|
+ var pri = arr[0];
|
|
|
+ var func = arr[1];
|
|
|
+ return func.apply({}, args);
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ function add_filters(filtername, filterfunction, priority, filterinstancenamed) {
|
|
|
+ filters[filtername] = filters[filtername] || [];
|
|
|
+ if (typeof(priority) === "string" && typeof(filterinstancenamed) === "undefined") {
|
|
|
+ filterinstancenamed = priority;
|
|
|
+ priority = 10;
|
|
|
+ }
|
|
|
+ if (filterinstancenamed) {
|
|
|
+ var cindex = filters[filtername].length;
|
|
|
+ filters[filtername].map(function(filter, index) {
|
|
|
+ if (filter[2] === filterinstancenamed) {
|
|
|
+ cindex = index;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ filters[filtername][cindex] = [priority || 0, filterfunction, filterinstancenamed];
|
|
|
+ } else {
|
|
|
+ var cename = "";
|
|
|
+ filters[filtername].push([priority || 0, filterfunction, cename]);
|
|
|
+ }
|
|
|
+ filters[filtername].sort(function(a, b) {
|
|
|
+ return a[0] > b[0] ? 1 : a[0] < b[0] ? -1 : 0;
|
|
|
+ })
|
|
|
+ }
|
|
|
+ var filters_applied = {};
|
|
|
|
|
|
- return {
|
|
|
- add_action: add_action,
|
|
|
- do_action: do_action,
|
|
|
- add_filters: add_filters,
|
|
|
- apply_filters: apply_filters,
|
|
|
- apply_filters_map: apply_filters_map
|
|
|
+ function apply_filters(filtername, val) {
|
|
|
+ var restargs = Array.prototype.slice.call(arguments, 2);
|
|
|
+ filters_applied[filtername] = (filters_applied[filtername] || 0) + 1;
|
|
|
+ // var oval = $lib._.clone(val);
|
|
|
+ //$lib.log("apply_filters", filtername, "M:" + (filters[filtername] || []).length);
|
|
|
+ if (filters[filtername]) {
|
|
|
+ var index = 0,
|
|
|
+ mindex = filters[filtername].length;
|
|
|
+ while (index < mindex) {
|
|
|
+ val = filters[filtername][index][1].apply(filters[filtername][index][1], [val].concat(restargs));
|
|
|
+ index++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return val;
|
|
|
+ }
|
|
|
+
|
|
|
+ function apply_filters_map(filtername) {
|
|
|
+ var restargs = Array.prototype.slice.call(arguments, 1);
|
|
|
+ var cb = restargs.pop();
|
|
|
+ var arr = [];
|
|
|
+ if (typeof(filtername) === "object") {
|
|
|
+ filtername.map(function(name) {
|
|
|
+ arr = arr.concat(apply_filters(name, []));
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ arr = apply_filters(filtername, []);
|
|
|
+ }
|
|
|
+ console.log("AAAAAAAAAAAAAAAAAAAAAAAAA", filtername);
|
|
|
+ console.log("AAAAAAAAAAAAAAAAAAAAAAAAA", arr);
|
|
|
+ console.log("AAAAAAAAAAAAAAAAAAAAAAAAA", restargs);
|
|
|
+
|
|
|
+ async.mapSeries(arr, function(func, next) {
|
|
|
+ func.apply(func, restargs.concat(next));
|
|
|
+ }, cb)
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return {
|
|
|
+ add_action: add_action,
|
|
|
+ do_action: do_action,
|
|
|
+ add_filters: add_filters,
|
|
|
+ apply_filters: apply_filters,
|
|
|
+ apply_filters_map: apply_filters_map
|
|
|
+
|
|
|
+ };
|
|
|
|
|
|
- };
|
|
|
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+module.exports = function extend(reciever) {
|
|
|
+ var tool = create_tool();
|
|
|
+ if (typeof reciever === "object" || typeof reciever === "function") {
|
|
|
+ for(var p in tool){
|
|
|
+ reciever[p] = tool[p];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return reciever;
|
|
|
+}
|