deploy1 7 år sedan
förälder
incheckning
55e5d94d02
1 ändrade filer med 102 tillägg och 88 borttagningar
  1. 102 88
      index.js

+ 102 - 88
index.js

@@ -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;
+}