NAME
   Mason::Plugin::RouterSimple - Specify routes for page components

VERSION
   version 0.06

SYNOPSIS
   In a top-level component '/archives.mc':

       <%class>
       route ":section/{year:[0-9]{4}}/{month:[0-9]{2}}";
       </%class>

       Archives for <b><% $.section %></b>
       For the month of <% $.month %>/<% $.year %>

   then `/archives/news/2010/02' outputs

       Archives for <b>news</b>
       For the month of 2010/02

DESCRIPTION
   See Mason::Manual::RequestDispatch for background on how request paths
   get mapped to page components.

   This plugin allows you to parse `$m->path_info' (the remainder of the
   top-level path) using Router::Simple routes.

   It can be used whenever `$m->path_info' is set, i.e. with a dhandler or
   with a partial path.

   Use the `route' keyword to declare routes in a <%class> block. Like
   Router::Simple::connect, `route' takes a string/regex pattern and a
   destination hashref; the latter defaults to `{}' if omitted. e.g.

       <%class>
       route "wiki/:page", { action => "wiki" };
       route "download/*.*", { action => "download" };
       route "blog/{year:[0-9]+}/{month:[0-9]{2}}";
       </%class>

   This plugin overrides the default allow_path_info to return true for any
   component that declares at least one route. For components that do not
   declare a route, you will need to override `allow_path_info' as usual.

   Any named captured arguments, including `splat', are placed in component
   attributes, which are automatically declared (as standard read-write
   attributes) if you do not otherwise declare them.

   If you specify more than one route in a component, they will be tried in
   turn, with the first matching route taking precedence.

   If none of the routes match, the request will be declined; in a web
   context this generally means a 404.

   e.g. Given the route declarations above in a component named '/site.mc',

   *   The URL `/site/wiki/HomePage' will set `$.action = "wiki"' and
       `$.page = "HomePage"'.

   *   The URL `/site/download/ping.mp3' will set `$.action = "download"'
       and `$.splat = ['ping', 'mp3']'.

   *   The URL `/site/blog/2010/02' will set `$.year = "2010"' and `$.month
       = "02"'.

   *   The URLs `/site/other' and `/site/blog/10/02' will result in a
       decline/404.

SUPPORT
   The mailing list for Mason and Mason plugins is
   [email protected]. You must be subscribed to send a
   message. To subscribe, visit
   https://lists.sourceforge.net/lists/listinfo/mason-users.

   You can also visit us at `#mason' on irc:.

   Bugs and feature requests will be tracked at RT:

       http://rt.cpan.org/NoAuth/Bugs.html?Dist=Mason-Plugin-RouterSimple
       [email protected]

   The latest source code can be browsed and fetched at:

       http://github.com/jonswar/perl-mason-plugin-routersimple
       git clone git://github.com/jonswar/perl-mason-plugin-routersimple.git

SEE ALSO
   Mason, Router::Simple

AUTHOR
   Jonathan Swartz <[email protected]>

COPYRIGHT AND LICENSE
   This software is copyright (c) 2011 by Jonathan Swartz.

   This is free software; you can redistribute it and/or modify it under
   the same terms as the Perl 5 programming language system itself.