[Checkins] SVN: hurry.yui/trunk/src/hurry/yui/ Make hurry.yui work with the latest hurry.resource. Things start to look
Martijn Faassen
faassen at infrae.com
Tue Sep 30 14:27:49 EDT 2008
Log message for revision 91640:
Make hurry.yui work with the latest hurry.resource. Things start to look
plausible now.
Changed:
U hurry.yui/trunk/src/hurry/yui/README.txt
U hurry.yui/trunk/src/hurry/yui/__init__.py
U hurry.yui/trunk/src/hurry/yui/yui.py
U hurry.yui/trunk/src/hurry/yui/yuidepend.py
-=-
Modified: hurry.yui/trunk/src/hurry/yui/README.txt
===================================================================
--- hurry.yui/trunk/src/hurry/yui/README.txt 2008-09-30 17:30:09 UTC (rev 91639)
+++ hurry.yui/trunk/src/hurry/yui/README.txt 2008-09-30 18:27:48 UTC (rev 91640)
@@ -8,7 +8,47 @@
dependency structure and different modes (normal, minified and debug)
and consolidations.
-Let's check the YUI structure::
+Let's set up a way to render URLs; typically the framework has already
+done this::
- >>> from hurry.yui import yui
-
\ No newline at end of file
+ >>> def get_inclusion_url(inclusion):
+ ... return 'http://localhost/static/%s/%s' % (
+ ... inclusion.library.name, inclusion.relpath)
+ >>> from hurry.resource.interfaces import IInclusionUrl
+ >>> from zope import component
+ >>> component.provideUtility(get_inclusion_url,
+ ... IInclusionUrl)
+
+
+Let's check the YUI structure by picking out a resource in it::
+
+ >>> from hurry import yui
+ >>> from hurry.resource import NeededInclusions
+ >>> needed = NeededInclusions()
+ >>> needed.need(yui.fonts)
+ >>> print needed.render()
+ <link rel="stylesheet" type="text/css" href="http://localhost/static/yui/fonts/fonts.css" />
+
+Let's try a resource that has a dependency on fonts, namely
+``grids``::
+
+ >>> needed = NeededInclusions()
+ >>> needed.need(yui.grids)
+ >>> print needed.render()
+ <link rel="stylesheet" type="text/css" href="http://localhost/static/yui/fonts/fonts.css" />
+ <link rel="stylesheet" type="text/css" href="http://localhost/static/yui/grids/grids.css" />
+
+Now let's try to see consolidation: we include grids and reset at the
+same time, and we expect a consolidation to ``reset-fonts-grids``::
+
+ >>> needed = NeededInclusions()
+ >>> needed.need(yui.grids)
+ >>> needed.need(yui.reset)
+ >>> print needed.render()
+ <link rel="stylesheet" type="text/css" href="http://localhost/static/yui/reset-fonts-grids/reset-fonts-grids.css" />
+
+Let's get the same, minified::
+
+ >>> print needed.render(mode="minified")
+ <link rel="stylesheet" type="text/css" href="http://localhost/static/yui/reset-fonts-grids/reset-fonts-grids-min.css" />
+
Modified: hurry.yui/trunk/src/hurry/yui/__init__.py
===================================================================
--- hurry.yui/trunk/src/hurry/yui/__init__.py 2008-09-30 17:30:09 UTC (rev 91639)
+++ hurry.yui/trunk/src/hurry/yui/__init__.py 2008-09-30 18:27:48 UTC (rev 91640)
@@ -1 +1 @@
-#
+from hurry.yui.yui import *
Modified: hurry.yui/trunk/src/hurry/yui/yui.py
===================================================================
--- hurry.yui/trunk/src/hurry/yui/yui.py 2008-09-30 17:30:09 UTC (rev 91639)
+++ hurry.yui/trunk/src/hurry/yui/yui.py 2008-09-30 18:27:48 UTC (rev 91640)
@@ -1 +1,50 @@
-#
+from hurry.resource import Library, ResourceInclusion
+
+yui = Library('yui')
+
+fonts = ResourceInclusion(yui, 'fonts/fonts.css', minified='fonts/fonts-min.css')
+grids = ResourceInclusion(yui, 'grids/grids.css', depends=[fonts], minified='grids/grids-min.css')
+reset = ResourceInclusion(yui, 'reset/reset.css', minified='reset/reset-min.css')
+reset_fonts = ResourceInclusion(yui, 'reset-fonts/reset-fonts.css', supersedes=[reset, fonts], minified='reset-fonts/reset-fonts-min.css')
+reset_fonts_grids = ResourceInclusion(yui, 'reset-fonts-grids/reset-fonts-grids.css', supersedes=[reset, fonts, grids], minified='reset-fonts-grids/reset-fonts-grids-min.css')
+base = ResourceInclusion(yui, 'base/base.css', minified='base/base-min.css')
+yahoo = ResourceInclusion(yui, 'yahoo/yahoo.js', debug='yahoo/yahoo-debug.js', minified='yahoo/yahoo-min.js')
+dom = ResourceInclusion(yui, 'dom/dom.js', depends=[yahoo], debug='dom/dom-debug.js', minified='dom/dom-min.js')
+event = ResourceInclusion(yui, 'event/event.js', depends=[yahoo], debug='event/event-debug.js', minified='event/event-min.js')
+containercore = ResourceInclusion(yui, 'container/container_core.js', depends=[dom, event], debug='container/container_core-debug.js', minified='container/container_core-min.js')
+calendar = ResourceInclusion(yui, 'calendar/calendar.js', depends=[event, dom], debug='calendar/calendar-debug.js', minified='calendar/calendar-min.js')
+profiler = ResourceInclusion(yui, 'profiler/profiler-beta.js', depends=[yahoo], debug='profiler/profiler-beta-debug.js', minified='profiler/profiler-beta-min.js')
+container = ResourceInclusion(yui, 'container/container.js', depends=[dom, event], supersedes=[containercore], debug='container/container-debug.js', minified='container/container-min.js')
+element = ResourceInclusion(yui, 'element/element-beta.js', depends=[dom, event], debug='element/element-beta-debug.js', minified='element/element-beta-min.js')
+simpleeditor = ResourceInclusion(yui, 'editor/simpleeditor-beta.js', depends=[element], debug='editor/simpleeditor-beta-debug.js', minified='editor/simpleeditor-beta-min.js')
+menu = ResourceInclusion(yui, 'menu/menu.js', depends=[containercore], debug='menu/menu-debug.js', minified='menu/menu-min.js')
+json = ResourceInclusion(yui, 'json/json.js', depends=[yahoo], debug='json/json-debug.js', minified='json/json-min.js')
+datasource = ResourceInclusion(yui, 'datasource/datasource-beta.js', depends=[event], debug='datasource/datasource-beta-debug.js', minified='datasource/datasource-beta-min.js')
+charts = ResourceInclusion(yui, 'charts/charts-experimental.js', depends=[element, json, datasource], debug='charts/charts-experimental-debug.js', minified='charts/charts-experimental-min.js')
+button = ResourceInclusion(yui, 'button/button.js', depends=[element], debug='button/button-debug.js', minified='button/button-min.js')
+editor = ResourceInclusion(yui, 'editor/editor-beta.js', depends=[menu, element, button], supersedes=[simpleeditor], debug='editor/editor-beta-debug.js', minified='editor/editor-beta-min.js')
+get = ResourceInclusion(yui, 'get/get.js', depends=[yahoo], debug='get/get-debug.js', minified='get/get-min.js')
+yuiloader_dom_event = ResourceInclusion(yui, 'yuiloader-dom-event/yuiloader-dom-event.js', supersedes=[yahoo, dom, event, get], debug='yuiloader-dom-event/yuiloader-dom-event-debug.js', minified='yuiloader-dom-event/yuiloader-dom-event-min.js')
+animation = ResourceInclusion(yui, 'animation/animation.js', depends=[dom, event], debug='animation/animation-debug.js', minified='animation/animation-min.js')
+dragdrop = ResourceInclusion(yui, 'dragdrop/dragdrop.js', depends=[dom, event], debug='dragdrop/dragdrop-debug.js', minified='dragdrop/dragdrop-min.js')
+resize = ResourceInclusion(yui, 'resize/resize-beta.js', depends=[dom, event, dragdrop, element], debug='resize/resize-beta-debug.js', minified='resize/resize-beta-min.js')
+imagecropper = ResourceInclusion(yui, 'imagecropper/imagecropper-beta.js', depends=[dom, event, dragdrop, element, resize], debug='imagecropper/imagecropper-beta-debug.js', minified='imagecropper/imagecropper-beta-min.js')
+yuiloader = ResourceInclusion(yui, 'yuiloader/yuiloader-beta.js', supersedes=[yahoo, get], debug='yuiloader/yuiloader-beta-debug.js', minified='yuiloader/yuiloader-beta-min.js')
+logger = ResourceInclusion(yui, 'logger/logger.js', depends=[event, dom], debug='logger/logger-debug.js', minified='logger/logger-min.js')
+slider = ResourceInclusion(yui, 'slider/slider.js', depends=[dragdrop], debug='slider/slider-debug.js', minified='slider/slider-min.js')
+colorpicker = ResourceInclusion(yui, 'colorpicker/colorpicker.js', depends=[slider, element], debug='colorpicker/colorpicker-debug.js', minified='colorpicker/colorpicker-min.js')
+yuitest = ResourceInclusion(yui, 'yuitest/yuitest.js', depends=[logger], debug='yuitest/yuitest-debug.js', minified='yuitest/yuitest-min.js')
+connection = ResourceInclusion(yui, 'connection/connection.js', depends=[event], debug='connection/connection-debug.js', minified='connection/connection-min.js')
+utilities = ResourceInclusion(yui, 'utilities/utilities.js', supersedes=[yahoo, event, dragdrop, animation, dom, connection, element, get], debug='utilities/utilities-debug.js', minified='utilities/utilities-min.js')
+cookie = ResourceInclusion(yui, 'cookie/cookie-beta.js', depends=[yahoo], debug='cookie/cookie-beta-debug.js', minified='cookie/cookie-beta-min.js')
+uploader = ResourceInclusion(yui, 'uploader/uploader-experimental.js', depends=[element], debug='uploader/uploader-experimental-debug.js', minified='uploader/uploader-experimental-min.js')
+layout = ResourceInclusion(yui, 'layout/layout-beta.js', depends=[dom, event, element], debug='layout/layout-beta-debug.js', minified='layout/layout-beta-min.js')
+profilerviewer = ResourceInclusion(yui, 'profilerviewer/profilerviewer-beta.js', depends=[profiler, yuiloader, element], debug='profilerviewer/profilerviewer-beta-debug.js', minified='profilerviewer/profilerviewer-beta-min.js')
+datatable = ResourceInclusion(yui, 'datatable/datatable-beta.js', depends=[element, datasource], debug='datatable/datatable-beta-debug.js', minified='datatable/datatable-beta-min.js')
+selector = ResourceInclusion(yui, 'selector/selector-beta.js', depends=[yahoo, dom], debug='selector/selector-beta-debug.js', minified='selector/selector-beta-min.js')
+yahoo_dom_event = ResourceInclusion(yui, 'yahoo-dom-event/yahoo-dom-event.js', supersedes=[yahoo, event, dom], debug='yahoo-dom-event/yahoo-dom-event-debug.js', minified='yahoo-dom-event/yahoo-dom-event-min.js')
+tabview = ResourceInclusion(yui, 'tabview/tabview.js', depends=[element], debug='tabview/tabview-debug.js', minified='tabview/tabview-min.js')
+autocomplete = ResourceInclusion(yui, 'autocomplete/autocomplete.js', depends=[dom, event], debug='autocomplete/autocomplete-debug.js', minified='autocomplete/autocomplete-min.js')
+imageloader = ResourceInclusion(yui, 'imageloader/imageloader.js', depends=[event, dom], debug='imageloader/imageloader-debug.js', minified='imageloader/imageloader-min.js')
+treeview = ResourceInclusion(yui, 'treeview/treeview.js', depends=[event], debug='treeview/treeview-debug.js', minified='treeview/treeview-min.js')
+history = ResourceInclusion(yui, 'history/history.js', depends=[event], debug='history/history-debug.js', minified='history/history-min.js')
Modified: hurry.yui/trunk/src/hurry/yui/yuidepend.py
===================================================================
--- hurry.yui/trunk/src/hurry/yui/yuidepend.py 2008-09-30 17:30:09 UTC (rev 91639)
+++ hurry.yui/trunk/src/hurry/yui/yuidepend.py 2008-09-30 18:27:48 UTC (rev 91640)
@@ -24,29 +24,30 @@
name = normalize_name(name)
inclusion_map[name] = ResourceInclusion(yui,
deminize(value['path']))
-
- # fix up dependency structure, rollups
+
+ # fix up dependency structure
+ # XXX note that this doesn't establish proper rollup backreferences
+ # but this doesn't matter as we're just going to generate the
+ # code that does...
for name, value in d.items():
name = normalize_name(name)
inclusion = inclusion_map[name]
- require_inclusions = []
+
for require in value.get('requires', []):
require = normalize_name(require)
- require_inclusions.append(inclusion_map[require])
- inclusion.depends = require_inclusions
- rollup_inclusions = []
- for rollup_name in value.get('supersedes', []):
- rollup_name = normalize_name(rollup_name)
- r = inclusion_map[rollup_name]
- rollup_inclusion = ResourceInclusion(
- yui, r.relpath)
- rollup_inclusions.append(rollup_inclusion)
- inclusion.rollups = rollup_inclusions
- mode_inclusions = {}
- for mode_name, path in get_modes(inclusion.relpath).items():
- mode_inclusions[mode_name] = ResourceInclusion(
- yui, path) # XXX rollups
- inclusion.modes = mode_inclusions
+ inclusion.depends.append(inclusion_map[require])
+
+ for supersede_name in value.get('supersedes', []):
+ orig_supersede_name = supersede_name
+ supersede_name = normalize_name(supersede_name)
+ r = inclusion_map[supersede_name]
+ # only supersede things that don't supersede themselves
+ if not d[orig_supersede_name].get('supersedes'):
+ inclusion.supersedes.append(r)
+
+ for mode_name in get_modes(inclusion):
+ inclusion.modes[mode_name] = mode_inclusion = convert_to_mode(
+ inclusion, mode_name)
# now generate code
print generate_code(**inclusion_map)
@@ -60,15 +61,27 @@
rest = rest[:-len('-min')]
return rest + ext
-def get_modes(path):
- rest, ext = os.path.splitext(path)
+def convert_to_mode(inclusion, mode):
+ rest, ext = os.path.splitext(inclusion.relpath)
+ if mode == 'minified':
+ result = ResourceInclusion(inclusion.library,
+ rest + '-min' + ext)
+ elif mode == 'debug':
+ result = ResourceInclusion(inclusion.library,
+ rest + '-debug' + ext)
+ else:
+ result = inclusion
+
+ return result
+
+def get_modes(inclusion):
+ ext = inclusion.ext()
if ext == '.css':
- return {'minified': rest + '-min' + ext}
+ return ['minified']
elif ext == '.js':
- return {'minified': rest + '-min' + ext,
- 'debug': rest + '-debug' + ext}
+ return ['minified', 'debug']
else:
- return {}
+ return []
def sorted_dependencies(d):
"""Given dictionary created sorted list of items.
More information about the Checkins
mailing list