Kossy
view release on metacpan or search on metacpan
# NAME
Kossy - Sinatra-ish Simple and Clear web application framework
# SYNOPSIS
% kossy-setup MyApp
% cd MyApp
% plackup app.psgi
## lib/MyApp/Web.pm
use Kossy;
get '/' => sub {
my ( $self, $c ) = @_;
$c->render('index.tx', { greeting => "Hello!" });
};
get '/json' => sub {
my ( $self, $c ) = @_;
my $result = $c->req->validator([
'q' => {
default => 'Hello',
rule => [
[['CHOICE',qw/Hello Bye/],'Hello or Bye']
],
}
]);
$c->render_json({ greeting => $result->valid->get('q') });
};
1;
## views/index.tx
: cascade base
: around content -> {
<: $greeting :>
: }
# DESCRIPTION
Kossy is Sinatra-ish Simple and Clear web application framework, which is based upon [Plack](https://metacpan.org/pod/Plack), [Router::Boom](https://metacpan.org/pod/Router%3A%3ABoom), [Text::Xslate](https://metacpan.org/pod/Text%3A%3AXslate) and bui...
# Kossy class
Kossy exports some methods to building application
## CLASS METHODS for Kossy class
- my $kossy = Kossy->new( root\_dir => $root\_dir );
Create instance of the application object.
## OBJECT METHODS for Kossy class
- my $root\_dir = $kossy->root\_dir();
accessor to root directory of the application
- my $app = $kossy->psgi();
return PSGI application
## DISPATCHER METHODS for Kossy class
- filter
makes application wrapper like plack::middlewares.
filter 'set_title' => sub {
my $app:CODE = shift;
sub {
my ( $self:Kossy, $c:Kossy::Connection ) = @_;
$c->stash->{site_name} = __PACKAGE__;
$app->($self,$c);
}
};
- get path:String => \[\[filters\] =>\] CODE
- post path:String => \[\[filters\] =>\] CODE
setup router and dispatch code
get '/' => [qw/set_title/] => sub {
my ( $self:Kossy, $c:Kossy::Connection ) = @_;
$c->render('index.tx', { greeting => "Hello!" });
};
get '/json' => sub {
my ( $self:Kossy, $c:Kossy::Connection ) = @_;
$c->render_json({ greeting => "Hello!" });
};
dispatch code shall return Kossy::Response object or PSGI response ArrayRef or String.
( run in 0.528 second using v1.01-cache-2.11-cpan-5a3173703d6 )