NAME CGI::Application::Plugin::Mason - HTML::Mason plugin for CGI::Application VERSION 1.00 SYNOPSIS package YourApp; use strict; use base qw(CGI::Application); use CGI::Application::Plugin::Stash; # require! use CGI::Application::Plugin::Mason; # cgiapp_init sub cgiapp_init { my $self = shift; $self->interp_config( comp_root => "/path/to/root", data_dir => "/tmp/mason" ); } # runmode sub start { my $self = shift; # Catalyst like $self->stash->{name} = "kurt"; $self->stash->{age} = 27; # template path $self->stash->{template} = "/start.mason"; return $self->interp_exec; } # start.mason <%args> $name $age <% # $c is YourApp object %> <% $c->get_current_runmode %> name : <% $name | h %>
age : <% $age | h %> DESCRIPTION CGI::Application::Plugin::Mason is Plug-in that offers HTML::Mason template engine. METHOD interp_config Initialize HTML::Mason::Interp method. Option: comp_root : HTML::Mason root dir(default: Cwd::getpwd value) data_dir : HTML::Mason cache and object file directory(default: /tmp/mason) template_extension : template extension(default: .mason) Example: sub cgiapp_init { my $self = shift; $self->interp_config( comp_root => "/path/to/comp_root", data_dir => "/tmp/mason" ); # When pass other HTML::Mason option $self->interp_config( comp_root => "/path/to/comp_root", default_escape_flags => [ "h" ], autohandler_name => "autohandler", ); } interp HTML::Mason::Interp object wrapper Example: # HTML::Mason::Interp#set_escape $self->interp->set_escape( uc => sub { ${$_[0]} =~ tr/a-z/A-Z/ } ); # HTML::Mason::Interp#comp_root my $comp_root = $self->interp->comp_root; interp_exec Return HTML::Mason::Interp#exec result. The specification of the template file Example: # file name $self->stash->{template} = "/template.mason" # file handle open my $fh, "/path/to/template.mason" or croak("can not open file"); $self->stash->{template} = $fh; # scalarref $self->stash->{template} = \q{<%args>$name my name is <% $name %>}; default template name is /package_name/runmode_method_name . ${template_extension} Example: # ex1 package MyApp; sub start { my $self = shift; do something... # The file passing used at this time is /MyApp/start.mason return $self->interp_exec; } # ex2 package My::App; sub start { my $self = shift; do something... # The file passing used at this time is /My/App/start.mason return $self->interp_exec; } Specification of variable allocated in template Example: # ex1 sub start { my $self = shift; # stash method setting $self->stash->{name} = "kurt"; $self->stash->{age} = 27; return $self->interp_exec; } # ex2 sub start { my $self = shift; # interp_exec param setting return $self->interp_exec( name => "kurt", age => 27 ); } interp_pre_exec Trigger method before interp_exec. the argument is $temlate, and $arg. $template : $self->{template} value $args : $self->{stash} or $self->interp_exec args hashref Example: sub interp_pre_exec { my($self, $template, $args) = @_; $args->{newval} = "interp_pre_exec setting value!"; } # or $self->add_callback("interp_pre_exec", sub { my($self, $template, $args) = @_; $args->{newval} = "interp_pre_exec setting value!"; }); interp_post_exec Trigger method after interp_exec. the argument is $bodyref. $bodyref : content value scalarref Example: sub interp_post_exec { my($self, $bodyref) = @_; ${$bodyref} = encode("shiftjis", decode("utf8", ${$bodyref})); } # or $self->add_callback("interp_post_exec", sub { my($self, $bodyref) = @_; ${$bodyref} = encode("shiftjis", decode("utf8", ${$bodyref})); }); PRIVATE METHOD _get_interp_template_path Get default template path. SEE ALSO CGI::Application CGI::Application::Plugin::Stash HTML::Mason AUTHOR Akira Horimoto COPYRIGHT AND LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as perl itself. Copyright (C) 2007 Akira Horimoto