[KSS-checkins] r43325 - kukit/kss.pylons/trunk/kss/pylons

jvloothuis at codespeak.net jvloothuis at codespeak.net
Mon May 14 00:25:46 CEST 2007


Author: jvloothuis
Date: Mon May 14 00:25:46 2007
New Revision: 43325

Added:
   kukit/kss.pylons/trunk/kss/pylons/EXTERNALS.txt
   kukit/kss.pylons/trunk/kss/pylons/middleware.py
Modified:
   kukit/kss.pylons/trunk/kss/pylons/helpers.py
   kukit/kss.pylons/trunk/kss/pylons/middleware.txt
   kukit/kss.pylons/trunk/kss/pylons/tests.py
Log:
Added middleware for loading KSS javascripts. This makes sure the url's
generated from the helper are actually usable.


Added: kukit/kss.pylons/trunk/kss/pylons/EXTERNALS.txt
==============================================================================
--- (empty file)
+++ kukit/kss.pylons/trunk/kss/pylons/EXTERNALS.txt	Mon May 14 00:25:46 2007
@@ -0,0 +1,5 @@
+# created by: svn propset svn:externals -F ./EXTERNALS.txt .
+#
+
+# kss related packages
+kukit https://codespeak.net/svn/kukit/kukit.js/trunk

Modified: kukit/kss.pylons/trunk/kss/pylons/helpers.py
==============================================================================
--- kukit/kss.pylons/trunk/kss/pylons/helpers.py	(original)
+++ kukit/kss.pylons/trunk/kss/pylons/helpers.py	Mon May 14 00:25:46 2007
@@ -1,28 +1,32 @@
-def kss_javascripts():
-    tag = '<script type="text/javascript" src="/kss/%s"></script>'
-    scripts = [
-        'utils.js',
-        'kukit.js',
-        'actionreg.js',
-        'base2-dom-fp.js',
-        'commandprocessor.js',
-        'commandreg.js',
-        'cssQuery.js',
-        'dom.js',
-        'errors.js',
-        'eventreg.js',
-        'MochiKit.js',
-        'oper.js',
-        'plugin.js',
-        'providerreg.js',
-        'requestmanager.js',
-        'resourcedata.js',
-        'sarissa.js',
-        'selectorreg.js',
-        'serveraction.js',
-        'tokenizer.js',
-        'forms.js',
-        'kssparser.js',
-    ]
+import os
+
+javascript_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),
+                               'kukit')
 
-    return ''.join([tag % script for script in scripts])
+java_scripts = [
+    '3rd_party/sarissa.js',
+    '3rd_party/base2-dom-fp.js',
+    '3rd_party/cssQuery.js',
+    'kukit/utils.js',
+    'kukit/kukit.js',
+    'kukit/actionreg.js',
+    'kukit/commandprocessor.js',
+    'kukit/commandreg.js',
+    'kukit/dom.js',
+    'kukit/errors.js',
+    'kukit/eventreg.js',
+    'kukit/oper.js',
+    'kukit/plugin.js',
+    'kukit/providerreg.js',
+    'kukit/requestmanager.js',
+    'kukit/resourcedata.js',
+    'kukit/selectorreg.js',
+    'kukit/serveraction.js',
+    'kukit/tokenizer.js',
+    'kukit/forms.js',
+    'kukit/kssparser.js',
+]
+
+def kss_javascripts():
+    tag = '<script type="text/javascript" src="/kukit/%s"></script>'
+    return ''.join([tag % script for script in java_scripts])

Added: kukit/kss.pylons/trunk/kss/pylons/middleware.py
==============================================================================
--- (empty file)
+++ kukit/kss.pylons/trunk/kss/pylons/middleware.py	Mon May 14 00:25:46 2007
@@ -0,0 +1,15 @@
+import os
+from paste.urlparser import StaticURLParser
+from kss.pylons.helpers import javascript_path
+
+class StaticKSSJavascripts(object):
+
+    def __init__(self):
+        self.javascripts_app = StaticURLParser(
+            os.path.dirname(javascript_path))
+
+    def __call__(self, environ, start_response):
+        if environ.get('PATH_INFO', '').startswith('/kukit/'):
+            return self.javascripts_app(environ, start_response)
+        else:
+            return self.javascripts_app.not_found(environ, start_response)

Modified: kukit/kss.pylons/trunk/kss/pylons/middleware.txt
==============================================================================
--- kukit/kss.pylons/trunk/kss/pylons/middleware.txt	(original)
+++ kukit/kss.pylons/trunk/kss/pylons/middleware.txt	Mon May 14 00:25:46 2007
@@ -10,3 +10,20 @@
 Because KSS is in part a client framework we need to load some Javascript on
 the client side. This middleware component makes sure that all lookups for KSS
 related scripts are properly loaded from disk.
+
+Let us look at the middleware in action.
+
+  >>> from paste.fixture import TestApp
+  >>> from kss.pylons.middleware import StaticKSSJavascripts
+  >>> middleware = StaticKSSJavascripts()
+  >>> testapp = TestApp(middleware)
+
+Now we can call it. It only responds to paths starting with `/kukit/`.
+
+
+  >>> res = testapp.get('/some/other.js', status=404)
+
+  >>> res = testapp.get('/kukit/kukit/utils.js')
+  >>> res.body
+  '...Copyright...'
+

Modified: kukit/kss.pylons/trunk/kss/pylons/tests.py
==============================================================================
--- kukit/kss.pylons/trunk/kss/pylons/tests.py	(original)
+++ kukit/kss.pylons/trunk/kss/pylons/tests.py	Mon May 14 00:25:46 2007
@@ -4,7 +4,7 @@
 def test_suite():
     suite = unittest.TestSuite((
         doctest.DocFileSuite(
-            'helpers.txt',
+            'helpers.txt', 'middleware.txt',
             package='kss.pylons',
             optionflags=doctest.ELLIPSIS,
         ),


More information about the Kukit-checkins mailing list