remove an extra mention of uploads being experimental
[catagits/Web-Simple.git] / lib / Web / Simple.pm
index b7a59db..53e9eec 100644 (file)
@@ -6,7 +6,7 @@ use warnings::illegalproto ();
 use Moo ();
 use Web::Dispatch::Wrapper ();
 
-our $VERSION = '0.014';
+our $VERSION = '0.018';
 
 sub import {
   my ($class, $app_package) = @_;
@@ -30,6 +30,8 @@ sub _export_into {
   $INC{"${name}.pm"} = 'Set by "use Web::Simple;" invocation';
 }
 
+1;
+
 =head1 NAME
 
 Web::Simple - A quick and easy way to build simple web applications
@@ -459,8 +461,7 @@ Query and body parameters can be match via
 
 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 -
 
@@ -523,11 +524,7 @@ hashref style, the arrayref and single parameters will appear in C<@_> in the
 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
 
@@ -609,6 +606,45 @@ from subroutine prototypes, so this is equivalent to
 
   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,
@@ -798,6 +834,8 @@ Robin Edwards <robin.ge@gmail.com>
 
 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>
@@ -809,5 +847,3 @@ This library is free software and may be distributed under the same terms
 as perl itself.
 
 =cut
-
-1;