[Checkins] SVN: hurry.yui/trunk/src/hurry/yui/yui Updating the way to generate YUI dependencies in hurry.resource terms.
Martijn Faassen
faassen at infrae.com
Wed Sep 24 15:35:18 EDT 2008
Log message for revision 91450:
Updating the way to generate YUI dependencies in hurry.resource terms.
Not done yet but at least better than what was there before. :)
Changed:
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/yui.py
===================================================================
--- hurry.yui/trunk/src/hurry/yui/yui.py 2008-09-24 19:30:50 UTC (rev 91449)
+++ hurry.yui/trunk/src/hurry/yui/yui.py 2008-09-24 19:35:17 UTC (rev 91450)
@@ -1,51 +1 @@
-from hurry.resource import Library, Inclusion, ResourceSpec
-
-yui = Library('yui')
-
-yahoo = Inclusion([ResourceSpec(yui, "yahoo/yahoo.js")], debug="yahoo/yahoo-debug.js", minified="yahoo/yahoo-min.js")
-event = Inclusion([ResourceSpec(yui, "event/event.js")], depends_on=[yahoo], debug="event/event-debug.js", minified="event/event-min.js")
-dom = Inclusion([ResourceSpec(yui, "dom/dom.js")], depends_on=[yahoo], debug="dom/dom-debug.js", minified="dom/dom-min.js")
-element = Inclusion([ResourceSpec(yui, "element/element-beta.js")], depends_on=[dom, event], debug="element/element-beta-debug.js", minified="element/element-beta-min.js")
-dragdrop = Inclusion([ResourceSpec(yui, "dragdrop/dragdrop.js")], depends_on=[dom, event], debug="dragdrop/dragdrop-debug.js", minified="dragdrop/dragdrop-min.js")
-containercore = Inclusion([ResourceSpec(yui, "container/container_core.js")], depends_on=[dom, event], debug="container/container_core-debug.js", minified="container/container_core-min.js")
-history = Inclusion([ResourceSpec(yui, "history/history.js")], depends_on=[event], debug="history/history-debug.js", minified="history/history-min.js")
-treeview = Inclusion([ResourceSpec(yui, "treeview/treeview.js")], depends_on=[event], debug="treeview/treeview-debug.js", minified="treeview/treeview-min.js")
-datasource = Inclusion([ResourceSpec(yui, "datasource/datasource-beta.js")], depends_on=[event], debug="datasource/datasource-beta-debug.js", minified="datasource/datasource-beta-min.js")
-connection = Inclusion([ResourceSpec(yui, "connection/connection.js")], depends_on=[event], debug="connection/connection-debug.js", minified="connection/connection-min.js")
-autocomplete = Inclusion([ResourceSpec(yui, "autocomplete/autocomplete.js")], depends_on=[dom, event], debug="autocomplete/autocomplete-debug.js", minified="autocomplete/autocomplete-min.js")
-fonts = Inclusion([ResourceSpec(yui, "fonts/fonts.css")], minified="fonts/fonts-min.css")
-button = Inclusion([ResourceSpec(yui, "button/button.js")], depends_on=[element], debug="button/button-debug.js", minified="button/button-min.js")
-tabview = Inclusion([ResourceSpec(yui, "tabview/tabview.js")], depends_on=[element], debug="tabview/tabview-debug.js", minified="tabview/tabview-min.js")
-yuiloader = Inclusion([ResourceSpec(yui, "yuiloader/yuiloader-beta.js")], debug="yuiloader/yuiloader-beta-debug.js", minified="yuiloader/yuiloader-beta-min.js")
-reset = Inclusion([ResourceSpec(yui, "reset/reset.css")], minified="reset/reset-min.css")
-simpleeditor = Inclusion([ResourceSpec(yui, "editor/simpleeditor-beta.js")], depends_on=[element], debug="editor/simpleeditor-beta-debug.js", minified="editor/simpleeditor-beta-min.js")
-resize = Inclusion([ResourceSpec(yui, "resize/resize-beta.js")], depends_on=[dom, event, dragdrop, element], debug="resize/resize-beta-debug.js", minified="resize/resize-beta-min.js")
-datatable = Inclusion([ResourceSpec(yui, "datatable/datatable-beta.js")], depends_on=[element, datasource], debug="datatable/datatable-beta-debug.js", minified="datatable/datatable-beta-min.js")
-profilerviewer = Inclusion([ResourceSpec(yui, "profilerviewer/profilerviewer-beta.js")], depends_on=[profiler, yuiloader, element], debug="profilerviewer/profilerviewer-beta-debug.js", minified="profilerviewer/profilerviewer-beta-min.js")
-layout = Inclusion([ResourceSpec(yui, "layout/layout-beta.js")], depends_on=[dom, event, element], debug="layout/layout-beta-debug.js", minified="layout/layout-beta-min.js")
-uploader = Inclusion([ResourceSpec(yui, "uploader/uploader-experimental.js")], depends_on=[element], debug="uploader/uploader-experimental-debug.js", minified="uploader/uploader-experimental-min.js")
-cookie = Inclusion([ResourceSpec(yui, "cookie/cookie-beta.js")], depends_on=[yahoo], debug="cookie/cookie-beta-debug.js", minified="cookie/cookie-beta-min.js")
-base = Inclusion([ResourceSpec(yui, "base/base.css")], minified="base/base-min.css")
-slider = Inclusion([ResourceSpec(yui, "slider/slider.js")], depends_on=[dragdrop], debug="slider/slider-debug.js", minified="slider/slider-min.js")
-selector = Inclusion([ResourceSpec(yui, "selector/selector-beta.js")], depends_on=[yahoo, dom], debug="selector/selector-beta-debug.js", minified="selector/selector-beta-min.js")
-utilities = Inclusion([ResourceSpec(yui, "utilities/utilities.js")], debug="utilities/utilities-debug.js", minified="utilities/utilities-min.js")
-yuitest = Inclusion([ResourceSpec(yui, "yuitest/yuitest.js")], depends_on=[logger], debug="yuitest/yuitest-debug.js", minified="yuitest/yuitest-min.js")
-yuiloader_dom_event = Inclusion([ResourceSpec(yui, "yuiloader-dom-event/yuiloader-dom-event.js")], debug="yuiloader-dom-event/yuiloader-dom-event-debug.js", minified="yuiloader-dom-event/yuiloader-dom-event-min.js")
-get = Inclusion([ResourceSpec(yui, "get/get.js")], depends_on=[yahoo], debug="get/get-debug.js", minified="get/get-min.js")
-colorpicker = Inclusion([ResourceSpec(yui, "colorpicker/colorpicker.js")], depends_on=[slider, element], debug="colorpicker/colorpicker-debug.js", minified="colorpicker/colorpicker-min.js")
-logger = Inclusion([ResourceSpec(yui, "logger/logger.js")], depends_on=[event, dom], debug="logger/logger-debug.js", minified="logger/logger-min.js")
-imagecropper = Inclusion([ResourceSpec(yui, "imagecropper/imagecropper-beta.js")], depends_on=[dom, event, dragdrop, element, resize], debug="imagecropper/imagecropper-beta-debug.js", minified="imagecropper/imagecropper-beta-min.js")
-editor = Inclusion([ResourceSpec(yui, "editor/editor-beta.js")], depends_on=[menu, element, button], debug="editor/editor-beta-debug.js", minified="editor/editor-beta-min.js")
-animation = Inclusion([ResourceSpec(yui, "animation/animation.js")], depends_on=[dom, event], debug="animation/animation-debug.js", minified="animation/animation-min.js")
-json = Inclusion([ResourceSpec(yui, "json/json.js")], depends_on=[yahoo], debug="json/json-debug.js", minified="json/json-min.js")
-charts = Inclusion([ResourceSpec(yui, "charts/charts-experimental.js")], depends_on=[element, json, datasource], debug="charts/charts-experimental-debug.js", minified="charts/charts-experimental-min.js")
-menu = Inclusion([ResourceSpec(yui, "menu/menu.js")], depends_on=[containercore], debug="menu/menu-debug.js", minified="menu/menu-min.js")
-reset_fonts_grids = Inclusion([ResourceSpec(yui, "reset-fonts-grids/reset-fonts-grids.css")], minified="reset-fonts-grids/reset-fonts-grids-min.css")
-container = Inclusion([ResourceSpec(yui, "container/container.js")], depends_on=[dom, event], debug="container/container-debug.js", minified="container/container-min.js")
-profiler = Inclusion([ResourceSpec(yui, "profiler/profiler-beta.js")], depends_on=[yahoo], debug="profiler/profiler-beta-debug.js", minified="profiler/profiler-beta-min.js")
-calendar = Inclusion([ResourceSpec(yui, "calendar/calendar.js")], depends_on=[event, dom], debug="calendar/calendar-debug.js", minified="calendar/calendar-min.js")
-imageloader = Inclusion([ResourceSpec(yui, "imageloader/imageloader.js")], depends_on=[event, dom], debug="imageloader/imageloader-debug.js", minified="imageloader/imageloader-min.js")
-reset_fonts = Inclusion([ResourceSpec(yui, "reset-fonts/reset-fonts.css")], minified="reset-fonts/reset-fonts-min.css")
-grids = Inclusion([ResourceSpec(yui, "grids/grids.css")], depends_on=[fonts], minified="grids/grids-min.css")
-yahoo_dom_event = Inclusion([ResourceSpec(yui, "yahoo-dom-event/yahoo-dom-event.js")], debug="yahoo-dom-event/yahoo-dom-event-debug.js", minified="yahoo-dom-event/yahoo-dom-event-min.js")
-
+#
Modified: hurry.yui/trunk/src/hurry/yui/yuidepend.py
===================================================================
--- hurry.yui/trunk/src/hurry/yui/yuidepend.py 2008-09-24 19:30:50 UTC (rev 91449)
+++ hurry.yui/trunk/src/hurry/yui/yuidepend.py 2008-09-24 19:35:17 UTC (rev 91450)
@@ -2,6 +2,8 @@
import urllib2
import simplejson
+from hurry.resource import Library, ResourceInclusion, generate_code
+
YUILOADER_URL_TEMPLATE = ('http://yui.yahooapis.com/%s/build/yuiloader'
'/yuiloader-beta.js')
@@ -12,54 +14,45 @@
print "Usage: yuidepend <YUI version>"
return
d = load_json(version)
-
- items = sorted_dependencies(d)
- resources_text = []
- for key, value in items:
- path = deminize(value['path'])
- name = normalize_name(key)
- resource = '%s_resource = ResourceSpec(yui,\n "%s"' % (
- name, path)
-
- modes = get_modes(path)
- if modes:
- for key, mode_path in sorted(modes.items()):
- resource += ',\n %s="%s"' % (key, mode_path)
- resource += ')'
- resources_text.append(resource)
+ convert_to_inclusions(d)
- resources_text = '\n'.join(resources_text)
-
- inclusions_text = []
- for key, value in items:
- name = normalize_name(key)
- inclusion = '%s = Inclusion([%s_resource]' % (
- name, name)
- requires = value.get('requires', [])
- if requires:
- requires = [normalize_name(n) for n in requires]
- depends_on = '[%s]' % (', '.join(requires))
- inclusion += ', depends_on=%s' % depends_on
-
- inclusion += ')'
- inclusions_text.append(inclusion)
-
- inclusions_text = '\n'.join(inclusions_text)
+def convert_to_inclusions(d):
+ yui = Library('yui')
+ inclusion_map = {}
+ for name, value in d.items():
+ name = normalize_name(name)
+ inclusion_map[name] = ResourceInclusion(yui,
+ deminize(value['path']))
- python = """\
-from hurry.resource import Library, Inclusion, ResourceSpec
-
-yui = Library('yui')
-
-%s
-
-%s
-""" % (resources_text, inclusions_text)
- print python
-
+ # fix up dependency structure, rollups
+ 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
+
+ # now generate code
+ print generate_code(**inclusion_map)
+
def normalize_name(n):
- return n.replace('-', '_')
+ return str(n.replace('-', '_'))
def deminize(path):
rest, ext = os.path.splitext(path)
@@ -82,30 +75,8 @@
Sort by how much we depend.
"""
- # count dependencies of each item
- depend_sortkey = {}
- for key, value in d.items():
- for r in value.get('requires', []):
- c = depend_sortkey.get(r, 0)
- c += 1
- depend_sortkey[r] = c
-
- # add up numbers of dependencies
- depend_sortkey2 = {}
- for key, value in d.items():
- v = depend_sortkey.get(key, 0)
- for r in value.get('requires', []):
- c = depend_sortkey2.get(r, 0)
- c += v
- depend_sortkey2[r] = c
-
- # sort items by consolidated sort key
- items = d.items()
- items = sorted(items, key=lambda (key, value):
- depend_sortkey2.get(key, 0))
- # reverse result so that things depended on most appear first
- return list(reversed(items))
-
+
+
def load_json(version):
f = urllib2.urlopen(YUILOADER_URL_TEMPLATE % version)
data = f.read()
More information about the Checkins
mailing list