[Checkins] SVN: hurry.yui/ Initial import.
Martijn Faassen
faassen at infrae.com
Mon Sep 22 12:06:47 EDT 2008
Log message for revision 91354:
Initial import.
Changed:
A hurry.yui/
A hurry.yui/trunk/
A hurry.yui/trunk/buildout.cfg
A hurry.yui/trunk/setup.py
A hurry.yui/trunk/src/
A hurry.yui/trunk/src/hurry/
A hurry.yui/trunk/src/hurry/__init__.py
A hurry.yui/trunk/src/hurry/yui/
A hurry.yui/trunk/src/hurry/yui/README.txt
A hurry.yui/trunk/src/hurry/yui/__init__.py
A hurry.yui/trunk/src/hurry/yui/tests.py
A hurry.yui/trunk/src/hurry/yui/yui.py
A hurry.yui/trunk/src/hurry/yui/yuidepend.py
-=-
Added: hurry.yui/trunk/buildout.cfg
===================================================================
--- hurry.yui/trunk/buildout.cfg (rev 0)
+++ hurry.yui/trunk/buildout.cfg 2008-09-22 16:06:47 UTC (rev 91354)
@@ -0,0 +1,20 @@
+[buildout]
+develop = . hurry.resource
+parts = scripts devpython test
+versions = versions
+
+[versions]
+
+[scripts]
+recipe = zc.recipe.egg:scripts
+eggs = hurry.yui
+
+[devpython]
+recipe = zc.recipe.egg
+interpreter = devpython
+eggs = hurry.yui
+
+[test]
+recipe = zc.recipe.testrunner
+eggs = hurry.yui
+defaults = ['--tests-pattern', '^f?tests$', '-v']
Added: hurry.yui/trunk/setup.py
===================================================================
--- hurry.yui/trunk/setup.py (rev 0)
+++ hurry.yui/trunk/setup.py 2008-09-22 16:06:47 UTC (rev 91354)
@@ -0,0 +1,28 @@
+from setuptools import setup, find_packages
+import sys, os
+
+setup(
+ name='hurry.yui',
+ version='0.1dev',
+ description="YUI for hurry.resource.",
+ classifiers=[],
+ keywords='',
+ author='Martijn Faassen',
+ author_email='faassen at startifact.com',
+ license='ZPL 2.1',
+ packages=find_packages('src'),
+ package_dir={'': 'src'},
+ include_package_data=True,
+ zip_safe=False,
+ install_requires=[
+ 'setuptools',
+ 'hurry.resource',
+ 'simplejson',
+ ],
+ entry_points= {
+ 'console_scripts': [
+ 'yuidepend = hurry.yui.yuidepend:main',
+ ]
+ },
+
+ )
Added: hurry.yui/trunk/src/hurry/__init__.py
===================================================================
--- hurry.yui/trunk/src/hurry/__init__.py (rev 0)
+++ hurry.yui/trunk/src/hurry/__init__.py 2008-09-22 16:06:47 UTC (rev 91354)
@@ -0,0 +1,13 @@
+# XXX awful hack to make sure we don't get a warning due to two
+# namespace packages being loaded. Why this is needed I do not know,
+# haven't seen this before :(
+import warnings
+warnings.filterwarnings("ignore", "Module (.*) was already imported (.*)")
+
+# this is a namespace package
+try:
+ import pkg_resources
+ pkg_resources.declare_namespace(__name__)
+except ImportError:
+ import pkgutil
+ __path__ = pkgutil.extend_path(__path__, __name__)
Added: hurry.yui/trunk/src/hurry/yui/README.txt
===================================================================
--- hurry.yui/trunk/src/hurry/yui/README.txt (rev 0)
+++ hurry.yui/trunk/src/hurry/yui/README.txt 2008-09-22 16:06:47 UTC (rev 91354)
@@ -0,0 +1,14 @@
+hurry.yui
+=========
+
+Introduction
+------------
+
+This library packages YUI for ``hurry.resource``. It is aware of YUI's
+dependency structure and different modes (normal, minified and debug)
+and consolidations.
+
+Let's check the YUI structure::
+
+ >>> from hurry.yui import yui
+
\ No newline at end of file
Added: hurry.yui/trunk/src/hurry/yui/__init__.py
===================================================================
--- hurry.yui/trunk/src/hurry/yui/__init__.py (rev 0)
+++ hurry.yui/trunk/src/hurry/yui/__init__.py 2008-09-22 16:06:47 UTC (rev 91354)
@@ -0,0 +1 @@
+#
Added: hurry.yui/trunk/src/hurry/yui/tests.py
===================================================================
--- hurry.yui/trunk/src/hurry/yui/tests.py (rev 0)
+++ hurry.yui/trunk/src/hurry/yui/tests.py 2008-09-22 16:06:47 UTC (rev 91354)
@@ -0,0 +1,14 @@
+import unittest, doctest
+
+def test_suite():
+ globs = {}
+ optionflags = doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS
+
+ suite = unittest.TestSuite()
+
+ suite.addTest(doctest.DocFileSuite(
+ 'README.txt',
+ globs=globs,
+ optionflags=optionflags))
+ return suite
+
Added: hurry.yui/trunk/src/hurry/yui/yui.py
===================================================================
--- hurry.yui/trunk/src/hurry/yui/yui.py (rev 0)
+++ hurry.yui/trunk/src/hurry/yui/yui.py 2008-09-22 16:06:47 UTC (rev 91354)
@@ -0,0 +1,51 @@
+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")
+
Added: hurry.yui/trunk/src/hurry/yui/yuidepend.py
===================================================================
--- hurry.yui/trunk/src/hurry/yui/yuidepend.py (rev 0)
+++ hurry.yui/trunk/src/hurry/yui/yuidepend.py 2008-09-22 16:06:47 UTC (rev 91354)
@@ -0,0 +1,132 @@
+import sys, os
+import urllib2
+import simplejson
+
+YUILOADER_URL_TEMPLATE = ('http://yui.yahooapis.com/%s/build/yuiloader'
+ '/yuiloader-beta.js')
+
+def main():
+ try:
+ version = sys.argv[1]
+ except IndexError:
+ 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)
+
+ 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)
+
+ python = """\
+from hurry.resource import Library, Inclusion, ResourceSpec
+
+yui = Library('yui')
+
+%s
+
+%s
+""" % (resources_text, inclusions_text)
+ print python
+
+def normalize_name(n):
+ return n.replace('-', '_')
+
+def deminize(path):
+ rest, ext = os.path.splitext(path)
+ if rest.endswith('-min'):
+ rest = rest[:-len('-min')]
+ return rest + ext
+
+def get_modes(path):
+ rest, ext = os.path.splitext(path)
+ if ext == '.css':
+ return {'minified': rest + '-min' + ext}
+ elif ext == '.js':
+ return {'minified': rest + '-min' + ext,
+ 'debug': rest + '-debug' + ext}
+ else:
+ return {}
+
+def sorted_dependencies(d):
+ """Given dictionary created sorted list of items.
+
+ 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()
+ f.close()
+ s = "'moduleInfo': "
+ i = data.find(s)
+ i = i + len(s)
+ j = data.find("'yuitest': {", i)
+ j = data.find('}', j)
+ j = data.find('}', j + 1)
+ text = data[i:j + 1]
+ json = normalize_json(text)
+ return simplejson.loads(json)
+
+def normalize_json(text):
+ # proper json has doubly quoted strings
+ text = text.replace("'", '"')
+ result = []
+ for line in text.splitlines():
+ i = line.find('//')
+ if i != -1:
+ line = line[:i] + '\n'
+ result.append(line)
+ return ''.join(result)
More information about the Checkins
mailing list