[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