use Moo ();
use Web::Dispatch::Wrapper ();
-our $VERSION = '0.012';
+our $VERSION = '0.020';
sub import {
my ($class, $app_package) = @_;
$INC{"${name}.pm"} = 'Set by "use Web::Simple;" invocation';
}
+1;
+
=head1 NAME
Web::Simple - A quick and easy way to build simple web applications
You should note the special case path match C<sub (~)> which is only meaningful
when it is contained in this type of path match. It matches to an empty path.
+=head4 Naming your patch matches
+
+Any */**/*.*/**.* match can be followed with :name to make it into a named
+match, so:
+
+ sub (/*:one/*:two/*:three/*:four) {
+ "I match /1/2/3/4 capturing { one => 1, two => 2, three => 3, four => 4 }"
+ }
+
+ sub (/**.*:allofit) {
+ "I match anything capturing { allofit => \$whole_path }"
+ }
+
+In the specific case of a simple single-* match, the * may be omitted, to
+allow you to write:
+
+ sub (/:one/:two/:three/:four) {
+ "I match /1/2/3/4 capturing { one => 1, two => 2, three => 3, four => 4 }"
+ }
+
=head4 C</foo> and C</foo/> are different specs
As you may have noticed with the difference between C<sub(/foo/...)> and
The body spec will match if the request content is either
application/x-www-form-urlencoded or multipart/form-data - the latter
-of which is required for uploads, which are now handled experimentally
-- see below.
+of which is required for uploads - see below.
The param spec is elements of one of the following forms -
order you defined them in the protoype, but all hashrefs will merge into a
single C<$params>, as in the example above.
-=head3 Upload matches (EXPERIMENTAL)
-
-Note: This feature is experimental. This means that it may not remain
-100% in its current form. If we change it, notes on updating your code
-will be added to the L</CHANGES BETWEEN RELEASES> section below.
+=head3 Upload matches
sub (*foo=) { # param specifier can be anything valid for query or body
sub (GET+/user/*) {
+=head3 Accessing parameters via C<%_>
+
+If your dispatch specification causes your dispatch subroutine to receive
+a hash reference as its first argument, the contained named parameters
+will be accessible via C<%_>.
+
+This can be used to access your path matches, if they're named:
+
+ sub (GET + /foo/:path_part) {
+ [ 200,
+ ['Content-type' => 'text/plain'],
+ ["We are in $_{path_part}"],
+ ];
+ }
+
+Or, if your first argument would be a hash reference containing named
+query parameters:
+
+ sub (GET + /foo + ?:some_param=) {
+ [ 200,
+ ['Content-type' => 'text/plain'],
+ ["We received $_{some_param} as parameter"],
+ ];
+ }
+
+Of course this also works when all you are doing is slurping the whole set
+of parameters by their name:
+
+ sub (GET + /foo + ?*) {
+ [ 200,
+ ['Content-type' => 'text/plain'],
+ [exists($_{foo}) ? "Received a foo: $_{foo}" : "No foo!"],
+ ],
+ }
+
+Note that only the first hash reference will be avaialble via C<%_>. If
+you receive additional hash references, you will need to access them as
+usual.
+
=head3 Accessing the PSGI env hash
In some cases you may wish to get the raw PSGI env hash - to do this,
Andrew Rodland (hobbs) <andrew@cleverdomain.org>
+Robert Sedlacek (phaylon) <r.sedlacek@shadowcat.co.uk>
+
=head1 COPYRIGHT
Copyright (c) 2011 the Web::Simple L</AUTHOR> and L</CONTRIBUTORS>
as perl itself.
=cut
-
-1;