package Catalyst::Utils;
use strict;
-use attributes ();
use Catalyst::Exception;
use File::Spec;
use HTTP::Request;
=head1 METHODS
-=over 4
+=head2 appprefix($class)
-=item attrs($coderef)
-
-Returns attributes for coderef in a arrayref
+ MyApp::Foo becomes myapp_foo
=cut
-sub attrs { attributes::get( $_[0] ) || [] }
-
-=item class2appclass($class);
+sub appprefix {
+ my $class = shift;
+ $class =~ s/\:\:/_/g;
+ $class = lc($class);
+ return $class;
+}
-Returns the appclass for class.
+=head2 class2appclass($class);
MyApp::C::Foo::Bar becomes MyApp
My::App::C::Foo::Bar becomes My::App
return $appname;
}
-=item class2classprefix($class);
-
-Returns the classprefix for class.
+=head2 class2classprefix($class);
MyApp::C::Foo::Bar becomes MyApp::C
My::App::C::Foo::Bar becomes My::App::C
return $prefix;
}
-=item class2classsuffix($class);
-
-Returns the classsuffix for class.
+=head2 class2classsuffix($class);
MyApp::C::Foo::Bar becomes C::Foo::Bar
return $class;
}
-=item class2env($class);
+=head2 class2env($class);
-Returns the enviroment name for class.
+Returns the environment name for class.
MyApp becomes MYAPP
My::App becomes MY_APP
return uc($class);
}
-=item class2prefix( $class, $case );
+=head2 class2prefix( $class, $case );
-Returns the prefix for class.
+Returns the uri prefix for a class. If case is false the prefix is converted to lowercase.
- My::App::C::Foo::Bar becomes /foo/bar
+ My::App::C::Foo::Bar becomes foo/bar
=cut
return $prefix;
}
-=item class2tempdir( $class [, $create ] );
+=head2 class2tempdir( $class [, $create ] );
-Returns a tempdir for class. If create is true it will try to create the path.
+Returns a tempdir for a class. If create is true it will try to create the path.
My::App becomes /tmp/my/app
My::App::C::Foo::Bar becomes /tmp/my/app/c/foo/bar
sub class2tempdir {
my $class = shift || '';
my $create = shift || 0;
- my @parts = split '::', lc $class;
+ my @parts = split '::', lc $class;
my $tmpdir = dir( File::Spec->tmpdir, @parts )->cleanup;
- if ( $create && ! -e $tmpdir ) {
+ if ( $create && !-e $tmpdir ) {
eval { $tmpdir->mkpath };
- if ( $@ ) {
+ if ($@) {
Catalyst::Exception->throw(
- message => qq/Couldn't create tmpdir '$tmpdir', "$@"/
- );
+ message => qq/Couldn't create tmpdir '$tmpdir', "$@"/ );
}
}
return $tmpdir->stringify;
}
-=item home($class)
+=head2 home($class)
Returns home directory for given class.
{
$home = $subdir;
}
+
# clean up relative path:
# MyApp/script/.. -> MyApp
my ($lastdir) = $home->dir_list( -1, 1 );
return $home;
}
-=item prefix($class, $name);
+=head2 prefix($class, $name);
Returns a prefixed action.
- MyApp::C::Foo::Bar, yada becomes /foo/bar/yada
+ MyApp::C::Foo::Bar, yada becomes foo/bar/yada
=cut
return $name;
}
-=item reflect_actions($class);
-
-Returns an arrayref containing all actions of a component class.
-
-=cut
-
-sub reflect_actions {
- my $class = shift;
- my $actions = [];
- eval '$actions = $class->_action_cache';
-
- if ( $@ ) {
- Catalyst::Exception->throw(
- message => qq/Couldn't reflect actions of component "$class", "$@"/
- );
- }
-
- return $actions;
-}
-
-=item request($string);
+=head2 request($uri)
-Returns an C<HTTP::Request> from a string.
+Returns an L<HTTP::Request> object for a uri.
=cut
sub request {
my $request = shift;
-
unless ( ref $request ) {
-
- if ( $request =~ m/http/i ) {
+ if ( $request =~ m/^http/i ) {
$request = URI->new($request)->canonical;
}
else {
$request = URI->new( 'http://localhost' . $request )->canonical;
}
}
-
unless ( ref $request eq 'HTTP::Request' ) {
$request = HTTP::Request->new( 'GET', $request );
}
-
return $request;
}
-=back
-
=head1 AUTHOR
Sebastian Riedel, C<sri@cpan.org>