[Checkins] SVN: z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsfunction. make sure namespaces don't get clobbered if they've already been initialized.

Paul Carduner paulcarduner at gmail.com
Sat Jul 12 18:39:43 EDT 2008


Log message for revision 88303:
  make sure namespaces don't get clobbered if they've already been initialized.

Changed:
  U   z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsfunction.py
  U   z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsfunction.txt

-=-
Modified: z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsfunction.py
===================================================================
--- z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsfunction.py	2008-07-12 22:26:58 UTC (rev 88302)
+++ z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsfunction.py	2008-07-12 22:39:43 UTC (rev 88303)
@@ -93,15 +93,17 @@
             result += '}\n'
 
         # initialize namespaces
+        namespaces = filter(lambda k: bool(k),self._functions.keys())
+        namespaces.sort() # sort namespaces and ignore top level empty namespace.
         rendered = []
-        for nsIndex, ns in enumerate(sorted(self._functions.keys())):
+        for nsIndex, ns in enumerate(namespaces):
             if ns and nsIndex == 0:
                 result += 'var '
             parts = ns.split('.')
             for index in xrange(len(ns)):
                 path = '.'.join(parts[:index+1])
                 if path not in rendered:
-                    result += '%s = {};\n' % path
+                    result += '%s = %s || {};\n' % (path, path)
                     rendered.append(path)
 
         for ns, funcs in self._functions.items():

Modified: z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsfunction.txt
===================================================================
--- z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsfunction.txt	2008-07-12 22:26:58 UTC (rev 88302)
+++ z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsfunction.txt	2008-07-12 22:39:43 UTC (rev 88303)
@@ -30,7 +30,7 @@
 The functions can be rendered directly:
 
   >>> print View.jsFunctions.render()
-  var hw = {};
+  var hw = hw || {};
   hw.showHelloWorldMessage = function() {
     alert('Hello World!');
   };
@@ -49,9 +49,9 @@
         {'showHelloWorldMessage': <JSFunction showHelloWorldMessage>}}>
 
   >>> print View.jsFunctions.render()
-  var z3c = {};
-  z3c.formjs = {};
-  z3c.formjs.hw = {};
+  var z3c = z3c || {};
+  z3c.formjs = z3c.formjs || {};
+  z3c.formjs.hw = z3c.formjs.hw || {};
   z3c.formjs.hw.showHelloWorldMessage = function() {
     alert('Hello World!');
   };
@@ -78,9 +78,9 @@
                 'z3c.formjs': {'bar': <JSFunction bar>}}>
 
   >>> print View.jsFunctions.render()
-  var z3c = {};
-  z3c.formjs = {};
-  z3c.formjs.hw = {};
+  var z3c = z3c || {};
+  z3c.formjs = z3c.formjs || {};
+  z3c.formjs.hw = z3c.formjs.hw || {};
   z3c.formjs.hw.foo = function() {
     alert('Foo');
   };
@@ -102,9 +102,9 @@
   >>> viewlet.update()
   >>> print viewlet.render()
   <script type="text/javascript">
-    var z3c = {};
-    z3c.formjs = {};
-    z3c.formjs.hw = {};
+    var z3c = z3c || {};
+    z3c.formjs = z3c.formjs || {};
+    z3c.formjs.hw = z3c.formjs.hw || {};
     z3c.formjs.hw.foo = function() {
       alert('Foo');
     };
@@ -154,7 +154,7 @@
   var show1 = function () {
     alert('Hello World!');
   }
-  ns1 = {};
+  var ns1 = ns1 || {};
   ns1.show1 = function() {
     alert('Hello World!');
   };
@@ -173,7 +173,7 @@
   ...         return u"alert('Title' + title);"
 
   >>> print View.jsFunctions.render()
-  var ns = {};
+  var ns = ns || {};
   ns.show = function(title) {
     alert('Title' + title);
   };



More information about the Checkins mailing list