.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== .de Sh \" Subsection heading .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "REST::Application::Routes 3pm" .TH REST::Application::Routes 3pm "2007-08-09" "perl v5.10.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" REST::Application::Routes \- An implementation of Ruby on Rails type routes. .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& package MyApp; \& use base \*(AqREST::Application::Routes\*(Aq; \& \& my $obj = REST::Application::Routes\->new(); \& $obj\->loadResource( \& \*(Aq/data/workspaces/:ws/pages/:page\*(Aq, => \e&do_thing, \& # ... other routes here ... \& ); \& \& sub do_thing { \& my %vars = @_; \& print $vars{ws} . " " . $vars{page} . "\en"; \& } \& \& # Now, in some other place. Maybe a CGI file or an Apache handler, do: \& use MyApp; \& MyApp\->new\->run("/data/workspaces/cows/pages/good"); # prints "cows good" .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" Ruby on Rails has this concept of routes. Routes are \s-1URI\s0 path info templates which are tied to specific code (i.e. Controllers and Actions in Rails). That is routes consist of key value pairs, called the route map, where the key is the path info template and the value is a code reference. .PP A template is of the form: \f(CW\*(C`/foo/:variable/bar\*(C'\fR where variables are always prefaced with a colon. When a given path is passed to \f(CW\*(C`run()\*(C'\fR the code reference which the template maps to will be passed a hash where the keys are the variable names (sans colon) and the values are what was specified in place of the variables. .PP The route map is ordered, so the most specific matching template is used and so you should order your templates from least generic to most generic. .PP See REST::Application for details. The only difference between this module and that one is that this one uses \s-1URI\s0 templates as keys in the \&\f(CW\*(C`resourceHooks\*(C'\fR rather than regexes. .SH "METHODS" .IX Header "METHODS" These are methods which REST::Application::Routes has but its superclass does not. .Sh "\fIgetTemplateVars()\fP" .IX Subsection "getTemplateVars()" Returns a hash whose keys are the \f(CW\*(C`:symbols\*(C'\fR from the \s-1URI\s0 template and whose values are what where matched to be there. It is assumed that this method is called either from within or after \f(CW\*(C`loadResource()\*(C'\fR is called. Otherwise you're likely to get an empty hash back. .Sh "\fIgetLastMatchTemplate()\fP" .IX Subsection "getLastMatchTemplate()" This is an alias for \f(CW\*(C`getLastMatchPattern()\*(C'\fR, since this class is about templates rather than regexes. .SH "AUTHORS" .IX Header "AUTHORS" Matthew O'Connor .SH "LICENSE" .IX Header "LICENSE" This program is free software. It is subject to the same license as Perl itself. .SH "SEE ALSO" .IX Header "SEE ALSO" REST::Application,