[Checkins] SVN: hurry.resource/trunk/ Fix NameError when trying to render an inclusion with unknown extension.

Dan Korostelev nadako at gmail.com
Fri Aug 21 08:44:48 EDT 2009


Log message for revision 103037:
  Fix NameError when trying to render an inclusion with unknown extension.
  Document inclusion renderers mechanism in the README.txt.
  

Changed:
  U   hurry.resource/trunk/CHANGES.txt
  U   hurry.resource/trunk/src/hurry/resource/README.txt
  U   hurry.resource/trunk/src/hurry/resource/core.py
  U   hurry.resource/trunk/src/hurry/resource/interfaces.py

-=-
Modified: hurry.resource/trunk/CHANGES.txt
===================================================================
--- hurry.resource/trunk/CHANGES.txt	2009-08-21 12:33:10 UTC (rev 103036)
+++ hurry.resource/trunk/CHANGES.txt	2009-08-21 12:44:47 UTC (rev 103037)
@@ -4,8 +4,10 @@
 0.4 (unreleased)
 ================
 
-* ...
+* Fix NameError when trying to render an inclusion with unknown extension.
 
+* Document inclusion renderers mechanism in the README.txt.
+
 0.3 (2008-10-15)
 ================
 

Modified: hurry.resource/trunk/src/hurry/resource/README.txt
===================================================================
--- hurry.resource/trunk/src/hurry/resource/README.txt	2009-08-21 12:33:10 UTC (rev 103036)
+++ hurry.resource/trunk/src/hurry/resource/README.txt	2009-08-21 12:44:47 UTC (rev 103037)
@@ -938,3 +938,42 @@
    <ResourceInclusion 'a2.js' in library 'foo'>, 
    <ResourceInclusion 'a3.js' in library 'foo'>, 
    <ResourceInclusion 'a5.js' in library 'foo'>]
+
+
+Inclusion renderers
+===================
+
+The HTML fragments for inclusions are rendered by ``inclusion renderers``
+that are simple functions registered per extension.
+
+Renderers are registered in the ``inclusion_renderers`` dictionary:
+
+  >>> from hurry.resource.core import inclusion_renderers
+  >>> sorted(inclusion_renderers)
+  ['.css', '.js', '.kss']
+
+Renderers render HTML fragments using given resource URL:
+
+  >>> inclusion_renderers['.js']('http://localhost/script.js')
+  '<script type="text/javascript" src="http://localhost/script.js"></script>'
+
+Let's create an inclusion of unknown resource:
+
+  >>> a6 = ResourceInclusion(foo, 'nothing.unknown')
+
+  >>> from hurry.resource.core import render_inclusions
+  >>> render_inclusions([a6])
+  Traceback (most recent call last):
+  ...
+  UnknownResourceExtension: Unknown resource extension .unknown for resource
+                            inclusion: <ResourceInclusion 'nothing.unknown'
+                            in library 'foo'>
+
+Now let's add a renderer for our ".unknown" extension and try again:
+
+  >>> def render_unknown(url):
+  ...     return '<link rel="unknown" href="%s" />' % url
+  >>> inclusion_renderers['.unknown'] = render_unknown
+
+  >>> render_inclusions([a6])
+  '<link rel="unknown" href="http://localhost/static/foo/nothing.unknown" />'

Modified: hurry.resource/trunk/src/hurry/resource/core.py
===================================================================
--- hurry.resource/trunk/src/hurry/resource/core.py	2009-08-21 12:33:10 UTC (rev 103036)
+++ hurry.resource/trunk/src/hurry/resource/core.py	2009-08-21 12:44:47 UTC (rev 103037)
@@ -350,7 +350,7 @@
 def render_inclusion(inclusion, url):
     renderer = inclusion_renderers.get(inclusion.ext(), None)
     if renderer is None:
-        raise UnknownResourceExtension(
+        raise interfaces.UnknownResourceExtension(
             "Unknown resource extension %s for resource inclusion: %s" %
             (inclusion.ext(), repr(inclusion)))
     return renderer(url)

Modified: hurry.resource/trunk/src/hurry/resource/interfaces.py
===================================================================
--- hurry.resource/trunk/src/hurry/resource/interfaces.py	2009-08-21 12:33:10 UTC (rev 103036)
+++ hurry.resource/trunk/src/hurry/resource/interfaces.py	2009-08-21 12:44:47 UTC (rev 103037)
@@ -177,3 +177,6 @@
         This is the URL that we can add inclusion.rel_path to, to obtain
         the complete URL of the resource.
         """
+
+class UnknownResourceExtension(Exception):
+    """Unknown resource extension"""



More information about the Checkins mailing list