Reverting back to old behavior for components
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Utils.pm
index 89fbd4d..785c607 100644 (file)
@@ -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,63 @@ 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 {
+    my $class = shift || '';
+    my $prefix;
+    if ( $class =~ /^(.*::[MVC]|Model|View|Controller)?::.*$/ ) {
+        $prefix = $1;
+    }
+    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 {