Routes Changelog
========================

1.3.2 (April 30th, 2006)

*Bug Fixes*

* Fixed _filter bug with inclusion in match dict during matching, reported by David Creemer.
* Fixed improper url quoting by using urllib.encode, patch by Jason Culverhouse.



1.3.2 (April 30th, 2006)

*Bug Fixes*

* Fixed _filter bug with inclusion in match dict during matching, reported by David Creemer.
* Fixed improper url quoting by using urllib.encode, patch by Jason Culverhouse.



1.3.1 (April 4th, 2006)

*New Features*

* Mapper has an optional attribute ``append_slash``. When set to ``True``, any URL's
  generated will have a slash appended to the end. 

*Bug Fixes*

* Fixed prefix option so that if the PATH_INFO is empty after prefix regexp, its set to
  '/' so the match proceeds ok.
* Fixed prefix bug that caused routes after the initial one to not see the proper url
  for matching. Caught by Jochen Kupperschmidt.



1.3 (Feb. 25th, 2006)

*New Features*

* url_for keyword filters:
  - Named routes can now have a _filter argument that should specify a function that takes
    a dict as its sole argument. The dict will contain the full set of keywords passed to
    url_for, which the function can then modify as it pleases. The new dict will then be
    used as if it was the original set of keyword args given to url_for.

*Bug Fixes*

* Fixed Python 2.3 incompatibility due to using keyword arg for a sort statement
  when using the built-in controller scanner.



1.2 (Feb. 17th, 2006)
----------------

*Backwards Incompatibilities*

* If a named route doesn't exist, and a url_for call is used, instead of using the
  keyword arguments to generate a URL, they will be used as query args for the raw
  URL supplied.


*New Features*

* Routes Mapper additions:
  - If Mapper has debug=True, using match will return two additional values, the route
    that matched, if one did match. And a list of routes that were tried, and information
    about why they didn't pass.
* url_for enhancements:
  - Can now be used with 'raw' URL's to generate proper url's for static content that
    will then automatically include SCRIPT_NAME if necessary
  - Static named routes can now be used to shortcut common path information as desired.


*Enhancements*

* Controller Scanner will now sort controller names so that the longest one is first. This
  ensures that the deepest nested controller is executed first before more shallow ones to
  increase predictability.


*Bug Fixes*

* Controller Scanner now scans directories properly, the version in 1.1 left off the
  directory prefix when created the list of controllers.
    (Thanks to Justin for drawing my attention to it)



1.1 (Jan. 13th, 2006)
----------------

*New Features*

* Routes Mapper additions:
  - Now takes several optional arguments that determine how it will 
    generate the regexp's.
  - Can now hold a function for use when determining what the available
    controllers are. Comes with a default directory scanner
  - Given a directory for the default scanner or a function, the Mapper
    will now automatically run it to get the controller list when needed
* Syntax available for splitting routes to allow more complex route paths, such
  as ':controller/:(action)-:(id).html'
* Easier setup/integration with Routes per request. Setting the environ in a
  WSGI environ will run match, and setup everything needed for url_for/etc.



1.0.2 (Dec. 30th, 2005)
----------------

*Bug Fixes*

* Routes where a default was present but None were filling in improper values.
* Passing a 0 would evaluate to None during generation, resulting in missing
  URL parts



1.0.1 (Dec. 18th, 2005)
-----------------------

*New Features*

* Request Local Callable - You can now designate your own callable function that
  should then be used to store the request_config data. This is most useful for
  environments where its possible multiple requests might be running in a single
  thread. The callable should return a request specific object for attributes to
  be attached. See routes.__init__.py for more information.



1.0 (Nov. 21st, 2005)
---------------------

*Backwards Incompatibilities*

* None, however routes.__init__ will now load the common symbols most people will
  want to actually use.
  Thus, you can either:
       from routes import *
  Or:
       from routes import request_confg, Mapper
  The following names are available for importing from routes:
      request_config, Mapper, url_for, redirect_to

  
*New Features*

* Route Names - You can now name a route, which will save a copy of the defaults
  defined for later use by url_for or redirect_to. 
  Thus, a route and url_for looking like this:
       m.connect('home', controller='blog', action='splash')
       url_for(controller='blog', action='splash')   # => /home
  Can now be used with a name:
       m.connect('home_url','home', controller='blog', action='splash')
       url_for('home_url')  # => /home
  
  Additional keywords can still be added to url_for and will override defaults in
  the named route.
  
* Trailing / - Route recognition earlier failed on trailing slashes, not really a bug,
  not really a feature I guess. Anyways, trailing slashes are o.k. now as in the Rails
  version.
  
*Tests*

* redirect_to now has two sets of tests to ensure it works properly