X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst.pm;h=bf3049ba7b71637ea1d31b3dc53517a005a385e6;hb=9edb1eb325435873ed55f643d671cb050bd8b659;hp=c5b03e3f971b1ce21adb7fec24fc57de85054261;hpb=5da4f9c64271928011b9f28e4ba68786bbdf7d0b;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index c5b03e3..bf3049b 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -7,11 +7,12 @@ use Catalyst::Exception; use Catalyst::Log; use Catalyst::Utils; use NEXT; -use Text::ASCIITable; use Path::Class; our $CATALYST_SCRIPT_GEN = 4; -our $VERSION = '5.24'; +__PACKAGE__->mk_classdata($_) for qw/arguments dispatcher engine log/; + +our $VERSION = '5.34'; our @ISA; =head1 NAME @@ -125,94 +126,19 @@ Returns a hashref containing your applications settings. sub import { my ( $class, @arguments ) = @_; + # We have to limit $class to Catalyst to avoid pushing Catalyst upon every + # callers @ISA. + return unless $class eq 'Catalyst'; + my $caller = caller(0); - - if ( $caller eq 'main' ) { - return; - } - # Prepare inheritance - unless ( $caller->isa($class) ) { + unless ( $caller->isa('Catalyst') ) { no strict 'refs'; push @{"$caller\::ISA"}, $class; } - - if ( $caller->engine ) { - $caller->log->warn( qq/Attempt to re-initialize "$caller"/ ); - return; - } - - # Process options - my $flags = { }; - - foreach (@arguments) { - - if ( /^-Debug$/ ) { - $flags->{log} = ( $flags->{log} ) ? 'debug,' . $flags->{log} : 'debug'; - } - elsif (/^-(\w+)=?(.*)$/) { - $flags->{ lc $1 } = $2; - } - else { - push @{ $flags->{plugins} }, $_; - } - } - - $caller->setup_log ( delete $flags->{log} ); - $caller->setup_plugins ( delete $flags->{plugins} ); - $caller->setup_dispatcher ( delete $flags->{dispatcher} ); - $caller->setup_engine ( delete $flags->{engine} ); - $caller->setup_home ( delete $flags->{home} ); - - for my $flag ( sort keys %{ $flags } ) { - - if ( my $code = $caller->can( 'setup_' . $flag ) ) { - &$code( $caller, delete $flags->{$flag} ); - } - else { - $caller->log->warn(qq/Unknown flag "$flag"/); - } - } - - $caller->log->warn( "You are running an old helper script! " - . "Please update your scripts by regenerating the " - . "application and copying over the new scripts." ) - if ( $ENV{CATALYST_SCRIPT_GEN} - && ( $ENV{CATALYST_SCRIPT_GEN} < $CATALYST_SCRIPT_GEN ) ); - - - if ( $caller->debug ) { - - my @plugins = (); - - { - no strict 'refs'; - @plugins = grep { /^Catalyst::Plugin/ } @{"$caller\::ISA"}; - } - - if ( @plugins ) { - my $t = Text::ASCIITable->new; - $t->setOptions( 'hide_HeadRow', 1 ); - $t->setOptions( 'hide_HeadLine', 1 ); - $t->setCols('Class'); - $t->setColWidth( 'Class', 75, 1 ); - $t->addRow($_) for @plugins; - $caller->log->debug( "Loaded plugins:\n" . $t->draw ); - } - my $dispatcher = $caller->dispatcher; - my $engine = $caller->engine; - my $home = $caller->config->{home}; - - $caller->log->debug(qq/Loaded dispatcher "$dispatcher"/); - $caller->log->debug(qq/Loaded engine "$engine"/); - - $home - ? ( -d $home ) - ? $caller->log->debug(qq/Found home "$home"/) - : $caller->log->debug(qq/Home "$home" doesn't exist/) - : $caller->log->debug(q/Couldn't find home/); - } + $caller->arguments( [ @arguments ] ); + $caller->setup_home; } =item $c->engine @@ -269,6 +195,15 @@ sub plugin { =back +=head1 CASE SENSITIVITY + +By default Catalyst is not case sensitive, so C becomes +C. + +But you can activate case sensitivity with a config parameter. + + MyApp->config->{case_sensitive} = 1; + =head1 LIMITATIONS mod_perl2 support is considered experimental and may contain bugs. @@ -306,17 +241,55 @@ Web: =back -=head1 AUTHOR +=head1 CREDITS -Sebastian Riedel, C +Andy Grundman + +Andrew Ford + +Andrew Ruthven + +Autrijus Tang + +Christian Hansen + +Christopher Hicks + +Dan Sully + +Danijel Milicevic + +David Naughton + +Gary Ashton Jones + +Geoff Richards -=head1 THANK YOU +Jesse Sheidlower -Andy Grundman, Andrew Ford, Andrew Ruthven, Autrijus Tang, Christian Hansen, -Christopher Hicks, Dan Sully, Danijel Milicevic, David Naughton, -Gary Ashton Jones, Geoff Richards, Jesse Sheidlower, Jody Belka, -Johan Lindstrom, Juan Camacho, Leon Brocard, Marcus Ramberg, -Tatsuhiko Miyagawa and all the others who've helped. +Jody Belka + +Johan Lindstrom + +Juan Camacho + +Leon Brocard + +Marcus Ramberg + +Matt S Trout + +Robert Sedlacek + +Sebastian Riedel + +Tatsuhiko Miyagawa + +Ulf Edvinsson + +=head1 AUTHOR + +Sebastian Riedel, C =head1 LICENSE