---
name: "Mason::Plugin::RouterSimple"
section: "3pm"
platform: "linux"
package: "libmason-plugin-routersimple-perl"
version: "0.07-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Mason::Plugin::RouterSimple"
---

# Mason::Plugin::RouterSimple(3pm)

Specify routes for page components

## NAME

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

## VERSION

version 0.07

## 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 mason-users@lists.sourceforge.net. 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://irc.perl.org/#mason\>.

Bugs and feature requests will be tracked at RT:

```
    http://rt.cpan.org/NoAuth/Bugs.html?Dist=Mason-Plugin-RouterSimple
    bug-mason-plugin-routersimple@rt.cpan.org
```

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 \<swartz@pobox.com\>

## 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.
