[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