- Dropped the leading dot from extensions. Providing backwards compatibility
with inclusion registrations with leading decimal points.
- Deprecated the `render_into_html` method, as it was not used.
- Add resource compilers. Resource compilers are registered through entry
points and are associated by file extensions.
Resource compilers only do their work for Resources from Libraries that
are installed in development mode.
Every time a Resource is injected into the page, the mtime of the target
file is compared to the mtime of the source file. If the target file is
older than the source file, the source file is compiled.
- The filename of the target of the compilation contains a '-compile-' marker
and the name of the compiler.In non-development mode, the filesystem is
used to find a compiled version of a resource.
- Implemented a CoffeeScript, LessCSS and SCSS compiler. The optional dependencies
can be installed using the 'fanstatic[compilers]' requirement.
Base functionality of these compilers is shared in a baseclass.
Compilers do not know about Resources or Library, only about filenames.
- Added a fanstatic console script for listing libraries and compiling
the resources. Also supports `forced` compiling of resources.
- Consolidate the resources (find rollups) before applying the mode.
- Add bundling support: bundles are collections of Resources that can
be served in one HTTP request. Bundle URLs are constructed by the
fanstatic injector and served by the fanstatic publisher.
- Remove eager_superseder arguments from Resource, as this was not used.
- Abstracted features of Resource, Group, Bundle into base classes
Renderable and Dependable.
- Improved sorting of resources for inclusion on web page. This is to
prepare for bundling support. Ordering is now more consistent, no
matter in which order resources are .needed(). As long as you marked
dependencies right this shouldn't break applications; if your
resources are included in the wrong order now, fix resource dependencies.
- base_url is not required anymore (as in the past); improve base_url
management API so that integration packages like zope.fanstatic have
a more explicit way to manage this information.
- Resources check whether the file they refer to exists or not. If
the file doesn't exist you get an UnknownResourceError.
- Renamed UnknownResourceExtension exception to
UnknownResourceExtensionError. The old exception name is still
available for backwards compatibility.
- Use mtime instead of md5 for determining speeds up version computation
during development. The hashing method is still available for people who
don't trust their filesystem using the ``versioning_use_md5`` parameter.
- Fixed issue #49.
- Renamed ``hashing`` to ``versioning``. Use the version of the python package
as the version identifier for a Library, unless the package is installed in
development mode. If a Library has no version or is in development, use the
hash of the Library's directory contents as version identifier.
- Consolidated the Resource modes into ``debug`` and ``minified``.
- The injector component only sets up the NeededResources if the request method
is GET or POST.
- The ``devmode`` parameter has been renamed to ``recompute_hashes`` in order
to more aptly reflect its behavior. When recompute_hashes is True, hashes are
recomputed for every request - this is the default behavior.
Fanstatic is a fundamental rewrite of `hurry.resource`_. As such, Fanstatic
breaks compatibility with hurry.resource. Here's a list of essential changes
since version 0.10 of hurry.resource:
- Fundamental API cleanups and changes.
- Fanstatic no longer depends on ZTK packages, and provides several 'pure' WSGI
components. This allows for greater re-use in different WSGI-based frameworks.
- `zope.fanstatic`_ (a rewrite of `hurry.zoperesource`_) provides the integration of
Fanstatic with the ZTK.
- Fanstatic adds a WSGI component for serving resources, offloading it from the
- Fanstatic adds 'infinite' caching functionality by computing a unique URL
for every version of a resource.
- Fanstatic uses `py.test`_ for test discovery and execution.
- A lot of effort has been put into documenting Fanstatic.
.. _`hurry.resource`: http://pypi.python.org/pypi/hurry.resource
.. _`hurry.zoperesource`: http://pypi.python.org/pypi/hurry.zoperesource
.. _`zope.fanstatic`: http://pypi.python.org/pypi/zope.fanstatic
.. _`py.test`: http://pypi.python.org/pypi/pytest