Switched from YAML to JSON for now
[catagits/Catalyst-Runtime.git] / lib / Catalyst.pm
index 59b30c2..a3fc0f7 100644 (file)
@@ -21,7 +21,8 @@ use Scalar::Util qw/weaken/;
 use Tree::Simple qw/use_weak_refs/;
 use Tree::Simple::Visitor::FindByUID;
 use attributes;
-use YAML ();
+use JSON;
+use File::Slurp;
 
 __PACKAGE__->mk_accessors(
     qw/counter request response state action stack namespace/
@@ -59,7 +60,7 @@ __PACKAGE__->engine_class('Catalyst::Engine::CGI');
 __PACKAGE__->request_class('Catalyst::Request');
 __PACKAGE__->response_class('Catalyst::Response');
 
-our $VERSION = '5.62';
+our $VERSION = '5.64';
 
 sub import {
     my ( $class, @arguments ) = @_;
@@ -246,7 +247,10 @@ in an arrayref. The action will receive the arguments in C<@_> and
 C<$c-E<gt>req-E<gt>args>. Upon returning from the function,
 C<$c-E<gt>req-E<gt>args> will be restored to the previous values.
 
-    $c->forward('/foo');
+Any data C<return>ed from the action forwarded to, will be returned by the
+call to forward.
+
+    my $foodata = $c->forward('/foo');
     $c->forward('index');
     $c->forward(qw/MyApp::Model::CDBI::Foo do_stuff/);
     $c->forward('MyApp::View::TT');
@@ -445,11 +449,12 @@ Returns or takes a hashref containing the application's configuration.
 
     __PACKAGE__->config({ db => 'dsn:SQLite:foo.db' });
 
-You can also use a L<YAML> config file like myapp.yml in your
+You can also use a L<JSON> config file like myapp.json in your
 applications home directory.
 
-    ---
-    db: dsn:SQLite:foo.db
+    {
+        "db": "dsn:SQLite:foo.db"
+    }
 
 =head2 $c->debug
 
@@ -471,10 +476,16 @@ L<Catalyst::Engine>.
 
 =head2 $c->log
 
-Returns the logging object instance. Unless it is already set, Catalyst
-sets this up with a L<Catalyst::Log> object. To use your own log class:
+Returns the logging object instance. Unless it is already set, Catalyst sets
+this up with a L<Catalyst::Log> object. To use your own log class, set the
+logger with the C<< __PACKAGE__->log >> method prior to calling
+C<< __PACKAGE__->setup >>.
+
+ __PACKAGE__->log( MyLogger->new );
+ __PACKAGE__->setup;
+
+And later:
 
-    $c->log( MyLogger->new );
     $c->log->info( 'Now logging with my own logger!' );
 
 Your log class should implement the methods described in the
@@ -581,12 +592,15 @@ sub setup {
 
     $class->setup_home( delete $flags->{home} );
 
-    # YAML config support
+    # JSON config support
     my $confpath = $class->config->{file}
       || $class->path_to(
-        ( Catalyst::Utils::appprefix( ref $class || $class ) . '.yml' ) );
+        ( Catalyst::Utils::appprefix( ref $class || $class ) . '.json' ) );
     my $conf = {};
-    $conf = YAML::LoadFile($confpath) if -f $confpath;
+    if ( -f $confpath ) {
+        my $content = read_file("$confpath");
+        $conf = jsonToObj($content);
+    }
     my $oldconf = $class->config;
     $class->config( { %$oldconf, %$conf } );
 
@@ -821,6 +835,7 @@ sub welcome_message {
                  <p>If you want to jump right into web development with Catalyst
                     you might want to check out the documentation.</p>
                  <pre><code>perldoc <a href="http://cpansearch.perl.org/dist/Catalyst/lib/Catalyst/Manual/Intro.pod">Catalyst::Manual::Intro</a>
+perldoc <a href="http://cpansearch.perl.org/dist/Catalyst/lib/Catalyst/Manual/Tutorial.pod">Catalyst::Manual::Tutorial</a></code>
 perldoc <a href="http://cpansearch.perl.org/dist/Catalyst/lib/Catalyst/Manual.pod">Catalyst::Manual</a></code></pre>
                  <h2>What to do next?</h2>
                  <p>Next it's time to write an actual application. Use the
@@ -917,7 +932,7 @@ via $c->error.
 
 sub execute {
     my ( $c, $class, $code ) = @_;
-    $class = $c->components->{$class} || $class;
+    $class = $c->component($class) || $class;
     $c->state(0);
 
     if ( $c->debug ) {
@@ -937,14 +952,14 @@ sub execute {
         # this is done by walking up the call stack and looking for a calling
         # sub of Catalyst::forward before the eval
         my $callsub = q{};
-        for my $index (1..10) {
-            last 
-                if ( ( caller($index) )[0] eq 'Catalyst'
+        for my $index ( 1 .. 10 ) {
+            last
+              if ( ( caller($index) )[0] eq 'Catalyst'
                 && ( caller($index) )[3] eq '(eval)' );
-            
-            if ( (caller($index))[3] =~ /forward$/ ) {
-                $callsub = (caller($index))[3];
-                $action = "-> $action";
+
+            if ( ( caller($index) )[3] =~ /forward$/ ) {
+                $callsub = ( caller($index) )[3];
+                $action  = "-> $action";
                 last;
             }
         }