X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FUtils.pm;h=785c60792be7ee508207efef296f52cc5f2d1751;hb=386777dc6439f150392cbca5da094803296d3640;hp=6d21f2b23c3f7d8a8eb2a7829b1fb6f3a00420af;hpb=2930d61024f0e6aad2efb559d082347c52147e5e;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Utils.pm b/lib/Catalyst/Utils.pm index 6d21f2b..785c607 100644 --- a/lib/Catalyst/Utils.pm +++ b/lib/Catalyst/Utils.pm @@ -29,6 +29,8 @@ sub attrs { attributes::get( $_[0] ) || [] } Returns a prefixed action. + MyApp::C::Foo::Bar, yada becomes /foo/bar/yada + =cut sub prefix { @@ -38,10 +40,31 @@ sub prefix { return $name; } +=item class2appclass($class); + +Returns the appclass for class. + + MyApp::C::Foo::Bar becomes MyApp + My::App::C::Foo::Bar becomes My::App + +=cut + +sub class2appclass { + my $class = shift || ''; + my $appname = ''; + if ( $class =~ /^(.*)::([MVC]|Model|View|Controller)?::.*$/ ) { + $appname = $1; + } + return $appname; +} + =item class2classprefix($class); Returns the classprefix for class. + MyApp::C::Foo::Bar becomes MyApp::C + My::App::C::Foo::Bar becomes My::App::C + =cut sub class2classprefix { @@ -53,10 +76,27 @@ sub class2classprefix { return $prefix; } +=item class2classsuffix($class); + +Returns the classsuffix for class. + + MyApp::C::Foo::Bar becomes C::Foo::Bar + +=cut + +sub class2classsuffix { + my $class = shift || ''; + my $prefix = class2appclass($class) || ''; + $class =~ s/$prefix\:\://; + return $class; +} + =item class2prefix($class); Returns the prefix for class. + My::App::C::Foo::Bar becomes /foo/bar + =cut sub class2prefix {