NAME

Yeb - A simple structure for Web::Simple applications

VERSION

version 0.104

SYNOPSIS

package MyApp::Web;
use Yeb qw( Session JSON );

r "/" => sub {
  session test => pa('test');
  text "root";
};

r "/blub" => sub {
  text "blub";
};

r "/test/..." => sub {
  st stash_var => 1;
  chain 'Test';
};

r "/blog/..." => sub {
  chain '+SomeOther::YebApp';
};

1;

package MyApp::Web::Test;
use MyApp::Web;

r "/json" => sub {
  json {
    test => session('test'),
    stash_var => st('stash_var'),
  }
};

r "/" => sub {
  text " test = ".session('test')." and blub is ".st('stash_var');
};

1;

Can then be started like (see Web::Simple):

plackup -Ilib -MMyApp::Web -e'MyApp::Web->run_if_script'

or use the yeb CLI tool which automatically also loads up ./lib as path for easy handling:

yeb MyApp::Web

You can also add additional parameter after the class name:

yeb MyApp::Web -Imore/lib

Additional parameters get dispatched towards plackup

Bigger Text::Xslate example:

package MyApp::WebXslate;

use Yeb Session => JSON => 'Xslate';

# because of the root() usage we need to use plugin function call
plugin Static => { default_root => root('htdocs') };

xslate_path root('templates');

static qr{^/};
static_404 qr{^/images/}, root('htdocs_images');

r "/" => sub {
  st page => 'root';
  xslate 'index';
};

r "/test" => sub {
  st page => 'test';
  xslate 'index/test', { extra_var => 'extra' };
};

1;

DESCRIPTION

You need to install Task::Yeb to get all the plugin functionalities. Yeb itself is bare.

WARNING / ALPHA

WARNING: I don't advice using it without staying in contact with me (Getty) at #sycontent on irc.perl.org. While the core API will stay stable, the way how to extend the system will change with the time.

PLUGINS

For an example on how to make a simple plugin, which adds a new function and uses a Plack::Middleware, please see the source of Yeb::Plugin::Session.

FRAMEWORK FUNCTIONS

yeb

Gives back the Yeb::Application of the web application

chain

Return another class dispatcher chain, will be prepend with your main class name, this can be deactivated by using a + in front of the class name.

cfg

Access to the configuration hash

cc

Getting the current Yeb::Context of the request

env

Getting the Plack environment

req

Getting the current Plack::Request

root

Current directory or YEB_ROOT environment variable

cur

Current directory in the moment of start

plugin $yeb_plugin_name, { key => $value };

st

Access to the stash hash

pa

Access to the request parameters, gives back "" if is not set

pa_has

Check if some parameter is at all set

r (or route)

Adding a new dispatcher for this class (see Web::Simple)

pr (or post_route)

Adding a new dispatcher for this class who only reacts on POST.

middleware

Adding a Plack::Middleware to the flow

url

Get an url, via joining all parameters url encoded

text

Make a simple text/plain response with the text given as parameter

redirect

Make a simple redirect to the url given as parameter

SEE ALSO

Task::Yeb

Overview of all approved plugins

SUPPORT

IRC

Join #sycontent on irc.perl.org. Highlight Getty for fast reaction :).

Repository

http://github.com/Getty/p5-yeb
Pull request and additional contributors are welcome

Issue Tracker

http://github.com/Getty/p5-yeb/issues

AUTHOR

Torsten Raudssus <torsten@raudss.us>

COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Torsten Raudssus.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.