sub
appprefix {
my
$class
=
shift
;
$class
=~ s/\:\:/_/g;
$class
=
lc
(
$class
);
return
$class
;
}
sub
class2appclass {
my
$class
=
shift
||
''
;
my
$appname
=
''
;
if
(
$class
=~ /^(.*)::([MVC]|Model|View|Controller)?::.*$/ ) {
$appname
= $1;
}
return
$appname
;
}
sub
class2classprefix {
my
$class
=
shift
||
''
;
my
$prefix
;
if
(
$class
=~ /^(.*::[MVC]|Model|View|Controller)?::.*$/ ) {
$prefix
= $1;
}
return
$prefix
;
}
sub
class2classsuffix {
my
$class
=
shift
||
''
;
my
$prefix
= class2appclass(
$class
) ||
''
;
$class
=~ s/
$prefix
\:\://;
return
$class
;
}
sub
class2env {
my
$class
=
shift
||
''
;
$class
=~ s/\:\:/_/g;
return
uc
(
$class
);
}
sub
class2prefix {
my
$class
=
shift
||
''
;
my
$case
=
shift
|| 0;
my
$prefix
;
if
(
$class
=~ /^.*::([MVC]|Model|View|Controller)?::(.*)$/ ) {
$prefix
=
$case
? $2 :
lc
$2;
$prefix
=~ s/\:\:/\//g;
}
return
$prefix
;
}
sub
class2tempdir {
my
$class
=
shift
||
''
;
my
$create
=
shift
|| 0;
my
@parts
=
split
'::'
,
lc
$class
;
my
$tmpdir
= dir( File::Spec->tmpdir,
@parts
)->cleanup;
if
(
$create
&& !-e
$tmpdir
) {
eval
{
$tmpdir
->mkpath };
if
($@) {
Catalyst::Exception->throw(
message
=>
qq/Couldn't create tmpdir '$tmpdir', "$@"/
);
}
}
return
$tmpdir
->stringify;
}
sub
home {
my
$name
=
shift
;
$name
=~ s/\:\:/\//g;
my
$home
= 0;
if
(
my
$path
=
$INC
{
"$name.pm"
} ) {
$home
= file(
$path
)->absolute->dir;
$name
=~ /(\w+)$/;
my
$append
= $1;
my
$subdir
= dir(
$home
)->subdir(
$append
);
for
(
split
'/'
,
$name
) {
$home
= dir(
$home
)->parent }
if
(
$home
=~ /blib$/ ) {
$home
= dir(
$home
)->parent }
elsif
(!-f file(
$home
,
'Makefile.PL'
)
&& !-f file(
$home
,
'Build.PL'
) )
{
$home
=
$subdir
;
}
my
(
$lastdir
) =
$home
->dir_list( -1, 1 );
if
(
$lastdir
eq
'..'
) {
$home
= dir(
$home
)->parent->parent;
}
}
return
$home
;
}
sub
prefix {
my
(
$class
,
$name
) =
@_
;
my
$prefix
=
&class2prefix
(
$class
);
$name
=
"$prefix/$name"
if
$prefix
;
return
$name
;
}
sub
request {
my
$request
=
shift
;
unless
(
ref
$request
) {
if
(
$request
=~ m/http/i ) {
$request
= URI->new(
$request
)->canonical;
}
else
{
}
}
unless
(
ref
$request
eq
'HTTP::Request'
) {
$request
= HTTP::Request->new(
'GET'
,
$request
);
}
return
$request
;
}
1;