[imp] get rid of include() in novajs
[odoo/odoo.git] / addons / web / static / lib / novajs / src / nova.js
index 848bcbc..337ba15 100644 (file)
@@ -30,104 +30,70 @@ nova = (function() {
     /*
      * (Almost) unmodified John Resig's inheritance
      */
-    /*
-     * Simple JavaScript Inheritance By John Resig http://ejohn.org/ MIT
-     * Licensed.
+    /* Simple JavaScript Inheritance
+     * By John Resig http://ejohn.org/
+     * MIT Licensed.
      */
     // Inspired by base2 and Prototype
-    (function() {
-        var initializing = false, fnTest = /xyz/.test(function() {
-            xyz;
-        }) ? /\b_super\b/ : /.*/;
-        // The base Class implementation (does nothing)
-        this.Class = function() {
-        };
-
-        // Create a new Class that inherits from this class
-        this.Class.extend = function(prop) {
+    (function(){
+      var initializing = false, fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
+      // The base Class implementation (does nothing)
+      this.Class = function(){};
+      
+      // Create a new Class that inherits from this class
+      this.Class.extend = function(prop) {
         var _super = this.prototype;
-
-        // Instantiate a web class (but only create the instance,
+        
+        // Instantiate a base class (but only create the instance,
         // don't run the init constructor)
         initializing = true;
         var prototype = new this();
         initializing = false;
-
+        
         // Copy the properties over onto the new prototype
         for (var name in prop) {
-            // Check if we're overwriting an existing function
-            prototype[name] = typeof prop[name] == "function" &&
-                              typeof _super[name] == "function" &&
-                              fnTest.test(prop[name]) ?
-                    (function(name, fn) {
-                        return function() {
-                            var tmp = this._super;
-
-                            // Add a new ._super() method that is the same
-                            // method but on the super-class
-                            this._super = _super[name];
-
-                            // The method only need to be bound temporarily, so
-                            // we remove it when we're done executing
-                            var ret = fn.apply(this, arguments);
-                            this._super = tmp;
-
-                            return ret;
-                        };
-                    })(name, prop[name]) :
-                    prop[name];
+          // Check if we're overwriting an existing function
+          prototype[name] = typeof prop[name] == "function" && 
+            typeof _super[name] == "function" && fnTest.test(prop[name]) ?
+            (function(name, fn){
+              return function() {
+                var tmp = this._super;
+                
+                // Add a new ._super() method that is the same method
+                // but on the super-class
+                this._super = _super[name];
+                
+                // The method only need to be bound temporarily, so we
+                // remove it when we're done executing
+                var ret = fn.apply(this, arguments);        
+                this._super = tmp;
+                
+                return ret;
+              };
+            })(name, prop[name]) :
+            prop[name];
         }
-
+        
         // The dummy class constructor
         function Class() {
-            // All construction is actually done in the init method
-            if (!initializing && this.init) {
-                var ret = this.init.apply(this, arguments);
-                if (ret) { return ret; }
-            }
-            return this;
+          // All construction is actually done in the init method
+          if ( !initializing && this.init )
+            this.init.apply(this, arguments);
         }
-        Class.include = function (properties) {
-            for (var name in properties) {
-                if (typeof properties[name] !== 'function'
-                        || !fnTest.test(properties[name])) {
-                    prototype[name] = properties[name];
-                } else if (typeof prototype[name] === 'function'
-                           && prototype.hasOwnProperty(name)) {
-                    prototype[name] = (function (name, fn, previous) {
-                        return function () {
-                            var tmp = this._super;
-                            this._super = previous;
-                            var ret = fn.apply(this, arguments);
-                            this._super = tmp;
-                            return ret;
-                        }
-                    })(name, properties[name], prototype[name]);
-                } else if (typeof _super[name] === 'function') {
-                    prototype[name] = (function (name, fn) {
-                        return function () {
-                            var tmp = this._super;
-                            this._super = _super[name];
-                            var ret = fn.apply(this, arguments);
-                            this._super = tmp;
-                            return ret;
-                        }
-                    })(name, properties[name]);
-                }
-            }
-        };
-
+        
         // Populate our constructed prototype object
         Class.prototype = prototype;
-
+        
         // Enforce the constructor to be what we expect
-        Class.constructor = Class;
-
+        Class.prototype.constructor = Class;
+    
         // And make this class extendable
-        Class.extend = arguments.callee;
-
+        for(el in this) {
+            Class[el] = this[el];
+        }
+        
         return Class;
-        };
+      };
     }).call(lib);
     // end of John Resig's code