===========
PyRoutes.JS
===========

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

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

* Do you use `Python Routes <http://routes.groovie.org/>`_ library in `Pylons <http://docs.pylonsproject.org/projects/pylons_framework/dev/>`_ 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 ?

PyRoutes.JS 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 ``PyRoutes.JS`` 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

Source code
===========

Mercurial repository is here : https://bitbucket.org/harobed/pyroutes.js/src

You can clone the code :

::

    $ hg clone http://bitbucket.org/harobed/pyroutes.js

Issue tracker
=============

You can report your bugs here : https://bitbucket.org/harobed/pyroutes.js/issues

