Can now do $c->flash( key => param ) just like $c->stash
Ted Carnahan [Wed, 6 Dec 2006 21:41:50 +0000 (21:41 +0000)]
lib/Catalyst/Plugin/Session.pm
t/03_flash.t

index d4a4517..e644931 100644 (file)
@@ -380,14 +380,30 @@ sub keep_flash {
     (@{$href}{@keys}) = ((undef) x @keys);
 }
 
-sub flash {
+sub _flash_data { 
     my $c = shift;
     $c->_flash || $c->_load_flash || do {
         $c->create_session_id_if_needed;
         $c->_flash( {} );
+    };
+}
+
+sub _set_flash {
+    my $c = shift;
+    if (@_) {
+        my $items = @_ > 1 ? {@_} : $_[0];
+        croak('flash takes a hash or hashref') unless ref $items;
+        @{ $c->_flash }{ keys %$items } = values %$items;
     }
 }
 
+sub flash {
+    my $c = shift;
+    $c->_flash_data;
+       $c->_set_flash(@_);
+       return $c->_flash;
+}
+
 sub clear_flash {
     my $c = shift;
     
index ca9b886..0ed2242 100644 (file)
@@ -33,7 +33,7 @@ $c->finalize;
 
 is_deeply( $c->flash, { foo => "moose" }, "one key in flash" );
 
-$c->flash->{bar} = "gorch";
+$c->flash(bar => "gorch");
 
 is_deeply( $c->flash, { foo => "moose", bar => "gorch" }, "two keys in flash" );