==========
PyRoutesJS
==========

``PyRoutesJS`` provide a Javascript routes generation function like `Mapper.generate <http://routes.groovie.org/modules/mapper.html#routes.mapper.Mapper.generate>`_ method.

Introduction
============

* Do you use Python Routes library in Pylons or other applications ?
* Do you use something like ``${h.url('entry_view', entry_id=2)}`` in your templates ?

So, now do you dream to have Javascript routes generation function ?

PyRoutesJS is the tool that you need !

If you have this Routes Mapper configuration :

::

    ...
    map = Mapper()
    ...
    map.connect('entry_view', '/entries/{issue_id:\d*}/', controller='issues', action='view')
    map.connect('entry_edit', '/entries/{issue_id:\d*}/edit', controller='issues', action='edit')
    ...


In your javascript files, you can use ``PyRoutesJS`` like this :

::

    pyroutes.generate('entry_view', entry_id=2); // return '/entries/1/'
    pyroutes.generate('entry_edit', entry_id=5); // return '/entries/5/edit/'


Installation
============

::

    $ pip install pyroutes.js


Pylons integration
==================

In ``my_app/config/middleware.py`` file, append :

::

    ...
    from pylons.middleware import ErrorHandler, StatusCodeRedirect
    from pylons.wsgiapp import PylonsApp
    from routes.middleware import RoutesMiddleware
    
    ...
    
    from pyroutesjs import Middleware as PyRoutesJSMiddleware       # <= append this line
    
    ...
    
    from my_app.config.environment import load_environment
    
    ...

    def make_app(global_conf, full_stack=True, static_files=True, **app_conf):

        ...

        # Append PyRoutes.js middleware                         
        app = PyRoutesJSMiddleware(app, config['routes.map'])      # <= append this line

        app.config = config
        return app


In your template, append :

::

    <script type="text/javascript" src="${h.url('/js/pyroutes.js')}"></script>


Limitations
===========

* Currently you can only generate named routes
