incubator-flex-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aha...@apache.org
Subject svn commit: r1413199 - in /incubator/flex/falcon/trunk/compiler.js/js: ./ adobe.js
Date Sat, 24 Nov 2012 15:39:28 GMT
Author: aharui
Date: Sat Nov 24 15:39:27 2012
New Revision: 1413199

URL: http://svn.apache.org/viewvc?rev=1413199&view=rev
Log:
Class inheritance js code.  Might be full of bugs.

Added:
    incubator/flex/falcon/trunk/compiler.js/js/
    incubator/flex/falcon/trunk/compiler.js/js/adobe.js   (with props)

Added: incubator/flex/falcon/trunk/compiler.js/js/adobe.js
URL: http://svn.apache.org/viewvc/incubator/flex/falcon/trunk/compiler.js/js/adobe.js?rev=1413199&view=auto
==============================================================================
--- incubator/flex/falcon/trunk/compiler.js/js/adobe.js (added)
+++ incubator/flex/falcon/trunk/compiler.js/js/adobe.js Sat Nov 24 15:39:27 2012
@@ -0,0 +1,103 @@
+// JavaScript Document
+/* Simple JavaScript Inheritance
+ * By John Resig http://ejohn.org/
+ * MIT Licensed.
+ */
+// Inspired by base2 and Prototype
+
+// Modifications from original:
+// - "Class" replaced by "adobe"
+// - Refactored as a singleton class factory.  You call adobe.extend for all classes
+// instead of calling the class's extend method as shown in the blog aritcle
+// - createProxy added
+// - newObject added
+// - eventMap added
+(function(){
+  var initializing = false, fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
+  // The base Class implementation (does nothing)
+  this.adobe = function(){};
+  
+  adobe.eventMap = {
+  	click: "onClick"
+  }
+  
+  adobe.classes = {
+  }
+  
+  adobe.createProxy = function(context, method)
+  {
+	  var self = context;
+	  return function(e) { method.apply(self, [e]) };
+  }
+  
+  adobe.newObject = function(ctor, ctorArgs)
+  {
+	  if (ctor === flash.events.Event && ctorArgs.length == 1)
+	  {
+		  var evt = document.createEvent('Event');
+		  evt.initEvent(ctorArgs[0], false, false);
+		  return evt;
+	  }
+	  
+	  if (ctorArgs.length == 1)
+		return new ctor(ctorArgs[0]);
+	  if (ctorArgs.length == 0)
+	  	return new ctor();
+  }
+  
+  adobe.prototype.init = function () {};
+  
+  // Create a new Class that inherits from this class
+  adobe.extend = function(className, superClass, prop) {
+    var _super = superClass.prototype;
+    
+    // Instantiate a base class (but only create the instance,
+    // don't run the init constructor)
+    initializing = true;
+    var prototype = new superClass();
+    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];
+    }
+    
+    // The dummy class constructor
+    function adobe() {
+      // All construction is actually done in the init method
+      if ( !initializing && this.init )
+        this.init.apply(this, arguments);
+    }
+    
+	// Populate our constructed prototype object
+    adobe.prototype = prototype;
+    
+    // Enforce the constructor to be what we expect
+    adobe.prototype.constructor = adobe;
+
+	// AJH remove this for now
+    // And make this class extendable
+    // adobe.extend = arguments.callee;
+    
+    return adobe;
+  };
+})();
\ No newline at end of file

Propchange: incubator/flex/falcon/trunk/compiler.js/js/adobe.js
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message