r339 - / python-zc.resourcelibrary python-zc.resourcelibrary/branches python-zc.resourcelibrary/branches/upstream python-zc.resourcelibrary/branches/upstream/current python-zc.resourcelibrary/branches/upstream/current/src python-zc.resourcelibrary/branches/upstream/current/src/zc python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/example python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/example/my-lib python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info

Brian Sutherland jinty-guest at costa.debian.org
Wed Oct 25 09:37:51 UTC 2006


Author: jinty-guest
Date: 2006-10-25 09:37:50 +0000 (Wed, 25 Oct 2006)
New Revision: 339

Added:
   python-zc.resourcelibrary/
   python-zc.resourcelibrary/branches/
   python-zc.resourcelibrary/branches/upstream/
   python-zc.resourcelibrary/branches/upstream/current/
   python-zc.resourcelibrary/branches/upstream/current/Makefile
   python-zc.resourcelibrary/branches/upstream/current/PKG-INFO
   python-zc.resourcelibrary/branches/upstream/current/ZopePublicLicense.txt
   python-zc.resourcelibrary/branches/upstream/current/setup.py
   python-zc.resourcelibrary/branches/upstream/current/src/
   python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/
   python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/PKG-INFO
   python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/SOURCES.txt
   python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/namespace_packages.txt
   python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/not-zip-safe
   python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/top_level.txt
   python-zc.resourcelibrary/branches/upstream/current/src/zc/
   python-zc.resourcelibrary/branches/upstream/current/src/zc/__init__.py
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/README.txt
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/SETUP.cfg
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/__init__.py
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/configure.zcml
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/__init__.py
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/configure.zcml
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/example/
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/example/1.js
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/example/2.css
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/example/my-lib/
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/example/my-lib/included.css
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/example/my-lib/included.js
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_doc.py
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_1.pt
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_2.pt
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_3.pt
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_4.pt
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/meta.zcml
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/publication.py
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/resourcelibrary.py
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/tal.py
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zc.resourcelibrary-configure.zcml
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zc.resourcelibrary-ftesting.zcml
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zc.resourcelibrary-meta.zcml
   python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zcml.py
   python-zc.resourcelibrary/tags/
Log:
[svn-inject] Installing original source of python-zc.resourcelibrary

Added: python-zc.resourcelibrary/branches/upstream/current/Makefile
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/Makefile	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/Makefile	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,19 @@
+PYVERS=2.4
+
+all:
+	# nothing for now
+
+clean: $(PYVERS:%=clean-python%)
+	rm -rf dist
+	rm -rf build
+	rm -rf src/*.egg-info
+
+clean-python%:
+	python$* setup.py clean
+
+.PHONY: dist
+dist: clean $(PYVERS:%=build-python%-egg)
+	python setup.py sdist
+
+build-python%-egg:
+	python$* setup.py bdist_egg


Property changes on: python-zc.resourcelibrary/branches/upstream/current/Makefile
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/PKG-INFO
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/PKG-INFO	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/PKG-INFO	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,14 @@
+Metadata-Version: 1.0
+Name: zc.resourcelibrary
+Version: 0.5.2
+Summary: The resource library is a Zope 3 extension that is designed to make the
+inclusion of JavaScript, CSS, and other resources easy, cache-friendly,
+and component-friendly.
+
+Home-page: UNKNOWN
+Author: Zope Project
+Author-email: zope3-dev at zope.org
+License: ZPL
+Description: UNKNOWN
+Keywords: zope zope3
+Platform: UNKNOWN

Added: python-zc.resourcelibrary/branches/upstream/current/ZopePublicLicense.txt
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/ZopePublicLicense.txt	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/ZopePublicLicense.txt	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,54 @@
+Zope Public License (ZPL) Version 2.1
+-------------------------------------
+
+A copyright notice accompanies this license document that
+identifies the copyright holders.
+
+This license has been certified as open source. It has also
+been designated as GPL compatible by the Free Software
+Foundation (FSF).
+
+Redistribution and use in source and binary forms, with or
+without modification, are permitted provided that the
+following conditions are met:
+
+1. Redistributions in source code must retain the
+   accompanying copyright notice, this list of conditions,
+   and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the accompanying
+   copyright notice, this list of conditions, and the
+   following disclaimer in the documentation and/or other
+   materials provided with the distribution.
+
+3. Names of the copyright holders must not be used to
+   endorse or promote products derived from this software
+   without prior written permission from the copyright
+   holders.
+
+4. The right to distribute this software or to use it for
+   any purpose does not give you the right to use
+   Servicemarks (sm) or Trademarks (tm) of the copyright
+   holders. Use of them is covered by separate agreement
+   with the copyright holders.
+
+5. If any files are modified, you must cause the modified
+   files to carry prominent notices stating that you changed
+   the files and the date of any change.
+
+Disclaimer
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS''
+  AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+  NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+  AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
+  NO EVENT SHALL THE COPYRIGHT HOLDERS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.


Property changes on: python-zc.resourcelibrary/branches/upstream/current/ZopePublicLicense.txt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/setup.py
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/setup.py	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/setup.py	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,25 @@
+from setuptools import setup, find_packages
+
+setup(
+    name="zc.resourcelibrary",
+    version="0.5.2",
+    packages=find_packages('src', exclude=["*.tests", "*.ftests"]),
+    
+    package_dir= {'':'src'},
+    
+    namespace_packages=['zc'],
+    package_data = {
+    '': ['*.txt', '*.zcml'],
+    },
+
+    zip_safe=False,
+    author='Zope Project',
+    author_email='zope3-dev at zope.org',
+    description="""\
+The resource library is a Zope 3 extension that is designed to make the
+inclusion of JavaScript, CSS, and other resources easy, cache-friendly,
+and component-friendly.
+""",
+    license='ZPL',
+    keywords="zope zope3",
+    )


Property changes on: python-zc.resourcelibrary/branches/upstream/current/setup.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/__init__.py
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/__init__.py	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/__init__.py	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,5 @@
+# this is a namespace package
+try:
+    __import__('pkg_resources').declare_namespace(__name__)
+except ImportError:
+    pass


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/__init__.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/README.txt
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/README.txt	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/README.txt	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,247 @@
+================
+Resource Library
+================
+
+The resource library is designed to make the inclusion of JavaScript, CSS, and
+other resources easy, cache-friendly, and component-friendly.  For instance, if
+two widgets on a page need the same JavaScript library, the library should be
+only loaded once, but the widget designers should not have to concern
+themselves with the presence of other widgets.
+
+Imagine that one widget has a copy of a fictional Javascript library.  To
+configure that library as available use ZCML like this:
+
+    >>> zcml("""
+    ... <configure
+    ...     xmlns="http://namespaces.zope.org/zope"
+    ...     package="zc.resourcelibrary">
+    ...
+    ...   <resourceLibrary name="some-library">
+    ...     <directory source="ftests/example"/>
+    ...   </resourceLibrary>
+    ...
+    ... </configure>
+    ... """)
+
+This is exactly equivalent to a resourceDirectory tag, with no additional
+effect.
+
+Loading Files
+-------------
+
+It is also possible to indicate that one or more Javascript or CSS files should
+be included (by reference) into the HTML of a page that needs the library.
+This is the current difference between resourceLibrary and resourceDirectory.
+
+    >>> zcml("""
+    ... <configure
+    ...     xmlns="http://namespaces.zope.org/zope"
+    ...     package="zc.resourcelibrary">
+    ...
+    ...   <resourceLibrary name="my-lib">
+    ...     <directory
+    ...         source="ftests/example/my-lib"
+    ...         include="included.js included.css"
+    ...     />
+    ...   </resourceLibrary>
+    ...
+    ... </configure>
+    ... """)
+
+If a file is included that the resource library doesn't understand (i.e. it
+isn't Javascript or CSS), an exception will occur.
+
+    >>> zcml("""
+    ... <configure
+    ...     xmlns="http://namespaces.zope.org/zope"
+    ...     package="zc.resourcelibrary">
+    ...
+    ...   <resourceLibrary name="bad-lib">
+    ...     <directory
+    ...         source="ftests/example/my-lib"
+    ...         include="included.bad"
+    ...     />
+    ...   </resourceLibrary>
+    ...
+    ... </configure>
+    ... """)
+    Traceback (most recent call last):
+    ...
+    ZopeXMLConfigurationError:...
+        ConfigurationError: Resource library doesn't know how to include this
+        file: "included.bad".
+
+Usage
+-----
+
+Components signal their need for a particular resource library (Javascript or
+otherwise) by using a special TAL expression.  (The use of replace is not
+mandated, the result may be assigned to a dummy variable, or otherwise
+ignored.)
+
+    >>> zpt('<tal:block replace="resource_library:my-lib"/>')
+
+We'll be using a testbrowser.Browser to simulate a user viewing web pages.
+
+    >>> from zope.testbrowser.testing import Browser
+    >>> browser = Browser()
+    >>> browser.addHeader('Authorization', 'Basic mgr:mgrpw')
+
+When a page is requested that does not need any resource libraries, the HTML
+will be untouched.
+
+    >>> browser.open('http://localhost/zc.resourcelibrary.test_template_1')
+    >>> browser.contents
+    '...<head></head>...'
+
+When a page is requested that uses a component that needs a resource library,
+the library will be referenced in the rendered page.
+
+    >>> browser.open('http://localhost/zc.resourcelibrary.test_template_2')
+
+A reference to the JavaScript is inserted into the HTML.
+
+    >>> '/@@/my-lib/included.js' in browser.contents
+    True
+
+And the JavaScript is available from the URL referenced.
+
+    >>> browser.open('/@@/my-lib/included.js')
+    >>> print browser.contents
+        function be_annoying() {
+        alert('Hi there!');
+    }
+
+A reference to the CSS is also inserted into the HTML.
+
+    >>> browser.open('http://localhost/zc.resourcelibrary.test_template_2')
+    >>> '/@@/my-lib/included.css' in browser.contents
+    True
+
+And the CSS is available from the URL referenced.
+
+    >>> browser.open('/@@/my-lib/included.css')
+    >>> print browser.contents
+    div .border {
+        border: 1px silid black;
+    }
+
+A reference to an unknown library causes an exception.
+
+    >>> browser.open('http://localhost/zc.resourcelibrary.test_template_3')
+    Traceback (most recent call last):
+    ...
+    RuntimeError: Unknown resource library: "does-not-exist"
+
+Library usage may also be signaled programattically.  For example, if a page
+would not otherwise include a resource library...
+
+    >>> page = ('<html><head></head>'
+    ...         '<body tal:define="unused view/doSomething">'
+    ...         'This is the body.</body>')
+
+    >>> class View(object):
+    ...     def doSomething(self):
+    ...         pass
+
+    >>> zpt(page, view=View())
+    '...<head></head>...'
+
+...but we programmatically indicate that a resource library is needed, it will
+be included.
+
+    >>> import zc.resourcelibrary
+    >>> class View(object):
+    ...     def doSomething(self):
+    ...         zc.resourcelibrary.need('my-lib')
+
+    >>> '/@@/my-lib/included.js' in zpt(page, view=View())
+    True
+
+Dependencies
+------------
+
+If a resource library registers a dependency on another library, the dependency
+must be satisfied or an error will be generated.
+
+    >>> zcml("""
+    ... <configure
+    ...     xmlns="http://namespaces.zope.org/zope"
+    ...     package="zc.resourcelibrary">
+    ...
+    ...   <resourceLibrary name="dependent-but-unsatisfied" require="not-here">
+    ...     <directory source="ftests/example"/>
+    ...   </resourceLibrary>
+    ...
+    ... </configure>
+    ... """)
+    Traceback (most recent call last):
+    ...
+    ConfigurationExecutionError:...Resource library "dependent-but-unsatisfied"
+    has unsatisfied dependency on "not-here"...
+
+When the dependencies are satisfied, the registrations will succeed.
+
+    >>> zcml("""
+    ... <configure
+    ...     xmlns="http://namespaces.zope.org/zope"
+    ...     package="zc.resourcelibrary">
+    ...
+    ...   <resourceLibrary name="dependent" require="dependency">
+    ...     <directory source="ftests/example" include="1.js"/>
+    ...   </resourceLibrary>
+    ...
+    ...   <resourceLibrary name="dependency">
+    ...     <directory source="ftests/example" include="2.css"/>
+    ...   </resourceLibrary>
+    ...
+    ... </configure>
+    ... """)
+
+If one library depends on another and the first library is referenced on a
+page, the second library will also be included in the rendered HTML.
+
+    >>> zpt('<tal:block replace="resource_library:dependent"/>')
+    >>> browser.open('http://localhost/zc.resourcelibrary.test_template_4')
+    >>> '/@@/dependent/1.js' in browser.contents
+    True
+    >>> '/@@/dependency/2.css' in browser.contents
+    True
+
+Order matters, espacially for js files, so the dependency should
+appear before the dependent library in the page
+
+    >>> print browser.contents.strip()
+    <html>...dependency/2.css...dependent/1.js...</html>
+
+Error Conditions
+----------------
+
+Errors are reported if you do something wrong.
+
+    >>> zcml("""
+    ... <configure
+    ...     xmlns="http://namespaces.zope.org/zope"
+    ...     package="zc.resourcelibrary">
+    ...
+    ...   <resourceLibrary name="some-library">
+    ...     <directory source="does-not-exist"/>
+    ...   </resourceLibrary>
+    ...
+    ... </configure>
+    ... """)
+    Traceback (most recent call last):
+    ...
+    ZopeXMLConfigurationError: ...
+        ConfigurationError: Directory u'...does-not-exist' does not exist
+
+Future Work
+-----------
+
+ * We want to be able to specify a single file to add to the resource.
+ * We may want to be able to override a file in the resource with a different
+   file.
+ * Currently only one <directory> tag is allowed per-library.  If multiple tags
+   are allowed, should they be merged or have distinct prefixes?
+ * Add a test to ensure that files are only included once, and in the proper
+   order


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/README.txt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/SETUP.cfg
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/SETUP.cfg	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/SETUP.cfg	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,3 @@
+<data-files zopeskel/etc/package-includes>
+  zc.resourcelibrary-*.zcml
+</data-files>

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/__init__.py
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/__init__.py	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/__init__.py	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1 @@
+from resourcelibrary import getRequired, getIncluded, need


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/__init__.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/configure.zcml
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/configure.zcml	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/configure.zcml	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,17 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:tales="http://namespaces.zope.org/tales"
+    i18n_domain="zc.resourcelibrary"
+    >
+
+  <tales:expressiontype
+      name="resource_library"
+      handler=".tal.ResourceLibraryExpression"
+      />
+
+  <utility
+      component=".publication.Request"
+      provides="zope.app.publication.interfaces.IBrowserRequestFactory"
+      />
+
+</configure>


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/configure.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/__init__.py
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/__init__.py	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/__init__.py	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1 @@
+#


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/__init__.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/configure.zcml
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/configure.zcml	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/configure.zcml	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,37 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:browser="http://namespaces.zope.org/browser"
+    xmlns:zc="http://namespaces.zope.com/zc"
+    i18n_domain="zope"
+    package="zc.resourcelibrary.ftests"
+    >
+
+  <browser:page
+      for="zope.app.folder.interfaces.IFolder"
+      name="zc.resourcelibrary.test_template_1"
+      permission="zope.View"
+      template="test_template_1.pt"
+      />
+
+  <browser:page
+      for="zope.app.folder.interfaces.IFolder"
+      name="zc.resourcelibrary.test_template_2"
+      permission="zope.View"
+      template="test_template_2.pt"
+      />
+
+  <browser:page
+      for="zope.app.folder.interfaces.IFolder"
+      name="zc.resourcelibrary.test_template_3"
+      permission="zope.View"
+      template="test_template_3.pt"
+      />
+
+  <browser:page
+      for="zope.app.folder.interfaces.IFolder"
+      name="zc.resourcelibrary.test_template_4"
+      permission="zope.View"
+      template="test_template_4.pt"
+      />
+
+</configure>


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/configure.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/example/1.js
===================================================================

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/example/2.css
===================================================================

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/example/my-lib/included.css
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/example/my-lib/included.css	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/example/my-lib/included.css	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,3 @@
+div .border {
+    border: 1px silid black;
+}

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/example/my-lib/included.js
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/example/my-lib/included.js	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/example/my-lib/included.js	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,3 @@
+function be_annoying() {
+    alert('Hi there!');
+}

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_doc.py
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_doc.py	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_doc.py	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,86 @@
+##############################################################################
+#
+# Copyright (c) 2004 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""
+$Id: ntests.py 3330 2005-09-09 23:05:34Z jim $
+"""
+from StringIO import StringIO
+from zc.resourcelibrary import publication
+from zc.resourcelibrary import tal
+from zope.app.testing import functional
+from zope.configuration import xmlconfig
+from zope import component, interface
+from zope.pagetemplate import pagetemplate
+import doctest
+import os
+import pytz
+import unittest
+import zope.interface.common.idatetime
+import zope.publisher.interfaces
+import zope.security.interfaces
+import zope.security.management
+import zope.testing.module
+
+#### testing framework ####
+
+def zcml(s, execute=True):
+    from zope.app.appsetup.appsetup import __config_context as context
+    try:
+        xmlconfig.string(s, context, execute=execute)
+    except:
+        context.end()
+        raise
+
+
+class TestPageTemplate(pagetemplate.PageTemplate):
+    def __init__(self, view):
+        self.view = view
+        super(TestPageTemplate, self).__init__()
+
+    def pt_getContext(self, *args, **kws):
+        context = super(TestPageTemplate, self).pt_getContext(*args, **kws)
+        context['view'] = self.view
+        return context
+
+
+def zpt(s, view=None):
+    request = publication.Request(body_instream=StringIO(''), environ={})
+    zope.security.management.newInteraction(request)
+    pt = TestPageTemplate(view)
+
+    # if the resource library expression hasn't been registered, do so
+    engine = pt.pt_getEngine()
+    type_name = 'resource_library'
+    if type_name not in engine.types:
+        engine.registerType(type_name, tal.ResourceLibraryExpression)
+
+    pt.write(s)
+    html = pt()
+    zope.security.management.endInteraction()
+
+    if html:
+        request.response.setResult(html)
+        return request.response.consumeBody()
+
+#### test setup ####
+
+def test_suite():
+    suite = functional.FunctionalDocFileSuite(
+        '../README.txt',
+        globs={'zcml': zcml, 'zpt': zpt},
+        optionflags=doctest.NORMALIZE_WHITESPACE+doctest.ELLIPSIS,
+        )
+    return suite
+
+if __name__ == '__main__':
+    unittest.main(defaultTest='test_suite')


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_doc.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_1.pt
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_1.pt	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_1.pt	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,4 @@
+<html>
+  <head></head>
+  <body></body>
+</html>


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_1.pt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_2.pt
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_2.pt	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_2.pt	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,6 @@
+<html>
+  <head></head>
+  <body>
+    <tal:block replace="structure resource_library:my-lib"/>
+  </body>
+</html>


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_2.pt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_3.pt
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_3.pt	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_3.pt	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,6 @@
+<html>
+  <head></head>
+  <body>
+    <tal:block replace="structure resource_library:does-not-exist"/>
+  </body>
+</html>


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_3.pt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_4.pt
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_4.pt	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_4.pt	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,6 @@
+<html>
+  <head></head>
+  <body>
+    <tal:block replace="structure resource_library:dependent"/>
+  </body>
+</html>


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/ftests/test_template_4.pt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/meta.zcml
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/meta.zcml	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/meta.zcml	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,24 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:meta="http://namespaces.zope.org/meta">
+
+  <meta:directives namespace="http://namespaces.zope.org/zope">
+
+    <meta:complexDirective
+        name="resourceLibrary"
+        schema=".zcml.IResourceLibraryDirective"
+        handler=".zcml.ResourceLibrary"
+        >
+
+      <meta:subdirective
+          name="directory"
+          schema=".zcml.IDirectoryDirective"
+          />
+
+    </meta:complexDirective>
+
+  </meta:directives>
+
+  <meta:provides feature="zc.resourcelibrary" />
+
+</configure>


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/meta.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/publication.py
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/publication.py	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/publication.py	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,92 @@
+##############################################################################
+#
+# Copyright (c) 2004 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""
+$Id: publication.py 4528 2005-12-23 02:45:25Z gary $
+"""
+from zope import interface
+from zope.app.publication.interfaces import IBrowserRequestFactory
+from zope.publisher.browser import BrowserRequest, BrowserResponse
+from zope.publisher.browser import isHTML
+import zc.resourcelibrary.zcml
+
+class Request(BrowserRequest):
+    interface.classProvides(IBrowserRequestFactory)
+    # __slots__ = ('resource_libraries',)
+
+    def _createResponse(self):
+        response = Response()
+        self.resource_libraries = response.resource_libraries = []
+        return response
+
+
+class Response(BrowserResponse):
+
+    def _implicitResult(self, body):
+        
+        #figure out the content type
+        content_type = self.getHeader('content-type')
+        if content_type is None:
+            if isHTML(body):
+                content_type = 'text/html'
+        
+        if content_type == 'text/html' or content_type == 'text/xml':
+            #act on HTML and XML content only!
+            
+            # add any libraries that the explicitly referenced libraries require
+            libs = list(self.resource_libraries)
+            while libs:
+                lib = libs.pop()
+                try:
+                    required = zc.resourcelibrary.getRequired(lib)
+                except KeyError:
+                    raise RuntimeError('Unknown resource library: "%s"' % lib)
+                for lib in required:
+                    if lib not in self.resource_libraries:
+                        self.resource_libraries.append(lib)
+                        libs.append(lib)
+    
+            # reverse the order of the libs in order to have the
+            # dependencies first. TODO: this does not work if the
+            # dependency is needed directly in the page before the
+            # dependent lib is needed.
+            self.resource_libraries.reverse()
+            
+            # generate the HTML that will be included in the response
+            html = []
+            for lib in self.resource_libraries:
+                included = zc.resourcelibrary.getIncluded(lib)
+                for file_name in included:
+                    if file_name.endswith('.js'):
+                        html.append('<script src="/@@/%s/%s" '
+                                    'language="Javascript1.1"' % (lib, file_name))
+                        html.append('    type="text/javascript">')
+                        html.append('</script>')
+                    elif file_name.endswith('.css'):
+                        html.append('<style type="text/css" media="all">')
+                        html.append('  <!--')
+                        html.append('    @import url("/@@/%s/%s");'
+                                    % (lib, file_name))
+                        html.append('  -->')
+                        html.append('</style>')
+                    else:
+                        # shouldn't get here; zcml.py is supposed to check includes
+                        raise RuntimeError('Resource library doesn\'t know how to '
+                                           'include this file: "%s"' % file_name)
+    
+            if html:
+                body = body.replace('<head>', '<head>\n    %s\n' %
+                                    '\n    '.join(html))
+
+
+        return super(Response, self)._implicitResult(body)


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/publication.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/resourcelibrary.py
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/resourcelibrary.py	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/resourcelibrary.py	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,48 @@
+##############################################################################
+#
+# Copyright (c) 2004 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+from zope.publisher.interfaces import IRequest
+import zope.security.management
+import zope.security.interfaces
+
+library_info = {}
+
+class LibraryInfo(object):
+    def __init__(self):
+        self.included = []
+        self.required = []
+
+
+def getRequest():
+    try:
+        i = zope.security.management.getInteraction() # raises NoInteraction
+    except zope.security.interfaces.NoInteraction:
+        return
+
+    for p in i.participations:
+        if IRequest.providedBy(p):
+            return p
+
+def need(library_name):
+    request = getRequest()
+    # only take note of needed libraries if there is a request, and it is
+    # capable of handling resource librarys
+    if request and hasattr(request, 'resource_libraries'):
+        if not library_name in request.resource_libraries:
+            request.resource_libraries.append(library_name)
+
+def getRequired(name):
+    return library_info[name].required
+
+def getIncluded(name):
+    return library_info[name].included


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/resourcelibrary.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/tal.py
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/tal.py	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/tal.py	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,26 @@
+##############################################################################
+#
+# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Resource Library Expression Type
+
+$Id: tal.py 3268 2005-08-22 23:31:27Z benji $
+"""
+from zope.tales.expressions import StringExpr
+from zc.resourcelibrary import resourcelibrary
+
+class ResourceLibraryExpression(StringExpr):
+    """Resource library expression handler class"""
+
+    def __call__(self, econtext):
+        resourcelibrary.need(self._expr)
+        return ''


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/tal.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zc.resourcelibrary-configure.zcml
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zc.resourcelibrary-configure.zcml	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zc.resourcelibrary-configure.zcml	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1 @@
+<include package="zc.resourcelibrary"/>
\ No newline at end of file


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zc.resourcelibrary-configure.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zc.resourcelibrary-ftesting.zcml
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zc.resourcelibrary-ftesting.zcml	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zc.resourcelibrary-ftesting.zcml	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1 @@
+<include package="zc.resourcelibrary.ftests"/>
\ No newline at end of file


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zc.resourcelibrary-ftesting.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zc.resourcelibrary-meta.zcml
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zc.resourcelibrary-meta.zcml	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zc.resourcelibrary-meta.zcml	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1 @@
+<include package="zc.resourcelibrary" file="meta.zcml"/>
\ No newline at end of file


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zc.resourcelibrary-meta.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zcml.py
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zcml.py	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zcml.py	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,119 @@
+##############################################################################
+#
+# Copyright (c) 2006 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+from zc.resourcelibrary.resourcelibrary import LibraryInfo, library_info
+from zope.app import zapi
+from zope.app.publisher.browser import directoryresource
+from zope.app.publisher.browser.metadirectives import IBasicResourceInformation
+from zope.app.publisher.browser.resourcemeta import allowed_names
+from zope.configuration.exceptions import ConfigurationError
+from zope.interface import Interface
+from zope.publisher.interfaces.browser import IBrowserRequest
+from zope.publisher.interfaces.browser import IDefaultBrowserLayer
+from zope.security.checker import CheckerPublic, NamesChecker
+import os.path
+import zope.configuration.fields
+
+class IResourceLibraryDirective(IBasicResourceInformation):
+    """
+    Defines a resource library
+    """
+
+    name = zope.schema.TextLine(
+        title=u"The name of the resource library",
+        description=u"""\
+        This is the name used to disambiguate resource libraries.  No two
+        libraries can be active with the same name.""",
+        required=True,
+        )
+
+    require = zope.configuration.fields.Tokens(
+        title=u"Require",
+        description=u"The resource libraries on which this library depends.",
+        required=False,
+        value_type=zope.schema.Text(),
+        )
+
+
+class IDirectoryDirective(Interface):
+    """
+    Identifies a directory to be included in a resource library
+    """
+
+    source = zope.configuration.fields.Path(
+        title=u"Source",
+        description=u"The directory containing the files to add.",
+        required=True,
+        )
+
+    include = zope.configuration.fields.Tokens(
+        title=u"Include",
+        description=u"The files which should be included in HTML pages which "
+                    u"reference this resource library.",
+        required=False,
+        value_type=zope.schema.Text(),
+        )
+
+
+def handler(name, dependencies, required, provided, adapter_name, factory, info=''):
+    if dependencies:
+        for dep in dependencies:
+            if dep not in library_info:
+                raise ConfigurationError(
+                    'Resource library "%s" has unsatisfied dependency on "%s".'
+                    % (name, dep))
+    zapi.getGlobalSiteManager().registerAdapter(
+        factory, required, provided, adapter_name, info)
+
+
+INCLUDABLE_EXTENTIONS = ('.js', '.css')
+
+class ResourceLibrary(object):
+
+    def __init__(self, _context, name, require=(),
+                 layer=IDefaultBrowserLayer, permission='zope.Public'):
+        self.name =  name
+        self.layer = layer
+
+        if permission == 'zope.Public':
+            permission = CheckerPublic
+        self.checker = NamesChecker(allowed_names, permission)
+
+        # make note of the library in a global registry
+        library_info[name] = LibraryInfo()
+        library_info[name].required.extend(require)
+
+    def directory(self, _context, source, include=()):
+        if not os.path.isdir(source):
+            raise ConfigurationError("Directory %r does not exist" % source)
+
+        for file_name in include:
+            ext = os.path.splitext(file_name)[1]
+            if ext not in INCLUDABLE_EXTENTIONS:
+                raise ConfigurationError(
+                    'Resource library doesn\'t know how to include this '
+                    'file: "%s".' % file_name)
+
+        # remember which files should be included in the HTML when this library
+        # is referenced
+        library_info[self.name].included.extend(include)
+
+        factory = directoryresource.DirectoryResourceFactory(
+            source, self.checker, self.name)
+
+        _context.action(
+            discriminator = ('resource', self.name, IBrowserRequest, self.layer),
+            callable = handler,
+            args = (self.name, library_info[self.name].required, (self.layer,),
+                    Interface, self.name, factory, _context.info),
+            )


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc/resourcelibrary/zcml.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/PKG-INFO
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/PKG-INFO	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/PKG-INFO	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,14 @@
+Metadata-Version: 1.0
+Name: zc.resourcelibrary
+Version: 0.5.2
+Summary: The resource library is a Zope 3 extension that is designed to make the
+inclusion of JavaScript, CSS, and other resources easy, cache-friendly,
+and component-friendly.
+
+Home-page: UNKNOWN
+Author: Zope Project
+Author-email: zope3-dev at zope.org
+License: ZPL
+Description: UNKNOWN
+Keywords: zope zope3
+Platform: UNKNOWN

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/SOURCES.txt
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/SOURCES.txt	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/SOURCES.txt	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1,32 @@
+Makefile
+ZopePublicLicense.txt
+setup.py
+src/zc/__init__.py
+src/zc.resourcelibrary.egg-info/PKG-INFO
+src/zc.resourcelibrary.egg-info/SOURCES.txt
+src/zc.resourcelibrary.egg-info/namespace_packages.txt
+src/zc.resourcelibrary.egg-info/not-zip-safe
+src/zc.resourcelibrary.egg-info/top_level.txt
+src/zc/resourcelibrary/README.txt
+src/zc/resourcelibrary/SETUP.cfg
+src/zc/resourcelibrary/__init__.py
+src/zc/resourcelibrary/configure.zcml
+src/zc/resourcelibrary/meta.zcml
+src/zc/resourcelibrary/publication.py
+src/zc/resourcelibrary/resourcelibrary.py
+src/zc/resourcelibrary/tal.py
+src/zc/resourcelibrary/zc.resourcelibrary-configure.zcml
+src/zc/resourcelibrary/zc.resourcelibrary-ftesting.zcml
+src/zc/resourcelibrary/zc.resourcelibrary-meta.zcml
+src/zc/resourcelibrary/zcml.py
+src/zc/resourcelibrary/ftests/__init__.py
+src/zc/resourcelibrary/ftests/configure.zcml
+src/zc/resourcelibrary/ftests/test_doc.py
+src/zc/resourcelibrary/ftests/test_template_1.pt
+src/zc/resourcelibrary/ftests/test_template_2.pt
+src/zc/resourcelibrary/ftests/test_template_3.pt
+src/zc/resourcelibrary/ftests/test_template_4.pt
+src/zc/resourcelibrary/ftests/example/1.js
+src/zc/resourcelibrary/ftests/example/2.css
+src/zc/resourcelibrary/ftests/example/my-lib/included.css
+src/zc/resourcelibrary/ftests/example/my-lib/included.js


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/SOURCES.txt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/namespace_packages.txt
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/namespace_packages.txt	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/namespace_packages.txt	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1 @@
+zc


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/namespace_packages.txt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/not-zip-safe
===================================================================

Added: python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/top_level.txt
===================================================================
--- python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/top_level.txt	                        (rev 0)
+++ python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/top_level.txt	2006-10-25 09:37:50 UTC (rev 339)
@@ -0,0 +1 @@
+zc


Property changes on: python-zc.resourcelibrary/branches/upstream/current/src/zc.resourcelibrary.egg-info/top_level.txt
___________________________________________________________________
Name: svn:eol-style
   + native




More information about the pkg-zope-commits mailing list