CGI-Application-Plus
view release on metacpan or search on metacpan
lib/CGI/Application/Plus.pm view on Meta::CPAN
; use Carp
######### NEW ############
; use Class::constr
( { init => [ qw| cgiapp_init setup | ]
, no_strict => 1
}
)
######### GROUPS ############
; use Object::groups
( { name => [ qw | param header_props | ]
, no_strict => 1
}
, { name => 'run_modes'
, no_strict => 1
, pre_process=> sub
{ if ( ref $_[1] eq 'ARRAY' )
{ $_[1] = { map { $_=>$_ } @{$_[1]} }
}
}
}
, { name => 'qparam'
, default => sub
{ eval{ scalar $_[0]->query->Vars }
|| croak qq(The query object cannot "Vars", )
. qq(you cannot use the "qparam" )
. qq(property.)
}
}
)
######### PROPERTIES ############
; use Object::props
( { name => '__STEP'
, default => 0
, allowed => qr/::run$/
}
, { name => 'mode_param'
, default => 'rm'
}
, { name => 'query'
, default => sub { shift()->cgiapp_get_query(@_) }
, no_strict => 1 # doesn't croak if fetched too late
, validation => sub
{ croak qq(Too late to set the query)
if $_[0]->__STEP > 0 # just before run
; 1
}
}
, { name => 'runmode'
, default => 'start'
, validation => sub
{ croak qq(Too late to set the run mode)
if ( $_[0]->__STEP >= 2 # after prerun
&& (caller(2))[3] !~ /::_run_runmode$/
)
; 1
}
}
, { name => 'tmpl_path'
, default => './tm'
, no_strict => 1 # doesn't croak if ./tm is not a valid path
, validation => sub { -d or croak qq(Not a valid path) }
}
, { name => 'RM_prefix'
, default => 'RM_'
}
, { name => 'header_type'
, default => 'header'
, validation => sub{ /^(header|redirect|none)$/ }
}
, { name => 'page'
}
)
######### PARAM AUTOLOAD ############
; our $AUTOLOAD
; sub AUTOLOAD :lvalue # Param AUTOLOADING
{ (my $n = $AUTOLOAD) =~ s/.*://
; return if $n eq 'DESTROY'
; @_ == 2
? ( $_[0]{param}{$n} = $_[1] )
: $_[0]{param}{$n}
}
######### OVERRIDE METHODS ############
; BEGIN
{ no strict 'refs'
; foreach my $n qw| cgiapp_init
cgiapp_prerun
cgiapp_postrun
teardown
|
{ *$n = sub {}
}
}
; sub cgiapp_get_query
{ require CGI
; CGI->new()
}
; sub setup
{ $_[0]->run_modes( start => \&dump_html )
}
######### METHODS ############
; sub run
( run in 1.540 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )