NAME
Evo - Evo - the next generation development framework
VERSION
version 0.0405
DESCRIPTION
This framework opens a new age of perl programming It provides rewritten and postmodern features like
[almost ready] Rewritten sexy Evo::Export
[almost ready] Post modern code injection programming Evo::Class instead of traditional OO
[almost ready] Fast non recursive "Promise" role, 100% "Promise/Spec A" compatible. + See Evo::Promise::Mojo
(almost ready) Exception handling in pure perl: "try" in Evo::Lib, like "try catch" but perl way. 30 lines of code and much faster (https://github.com/alexbyk/perl-evo/tree/master/bench#evolibtry) than other alternatives
(experimental) Evo::Ee - a role that provides "EventEmitter" abilities
(experimental) Evo::Fs - abstraction layer between you app and FileSystem for simple testing
(experimental) Evo::Di - dependency injection
SYNOPSYS
# enables strict, warnings, utf8, :5.22, signatures, postderef
use Evo;
XS
This module ships with optional C parts for performance. You can avoid installing them by providing PUREPERL_ONLY environmental variable
PUREPERL_ONLY=1 cpanm Evo
STATE
This module is under active development. It changes often and a lot! Get involved https://github.com/alexbyk/perl-evo
Also there are many gaps in documentation.
VIM
Vim ultisnips with Evo
support can be found here: https://github.com/alexbyk/vim-ultisnips-perl
IMPORTING
Load Module and call import
method, emulating caller
.
use Evo 'Foo'; # use Foo
use Evo 'Foo ()'; # use Foo();
use Evo 'FooClass foo1 foo2'; # use FooClass qw(foo1 foo2);
Used to make package header shorter
use Evo '-Eval *; My::App'; # use Evo::Eval '*'; use My::App;
All examples above also import string; experimental
and other from Evo::Default
SHORTCUTS
:: => (append to current)
/:: => (append to parent)
- => Evo (append to Evo)
shortcuts
Shortcuts are used to make life easier during code refactoring (and your module shorter) in Evo::Export and "with" in Evo::Class
-
is replaced by Evo
use Evo '-Promise promise'; # "Evo::Promise promise"
:
and ::
depend on the package name where they're used
::
means relative to the current module as a child
package My::App;
use Evo '::Bar'; # My::App::Bar
/
means parent and /::
means it's a sibling module (child of the parent of the current module)
package My::App;
use Evo '/::Bar'; # My::Bar
IMPORTS
With or without options, use Evo
loads Evo::Default:
-Default
use strict;
use warnings;
use feature ':5.22';
use experimental 'signatures';
use feature 'postderef';
I have decided that using 5.22 and some of the experimental features it brings has many benefits and is worth it. This list will be expanded in the future, I hope
-Loaded
This marks inline or generated classes as loaded, so can be used with require
or use
. So this code won't die. Used for test and examples in the documentation
require My::Inline;
{
package My::Inline;
use Evo -Loaded;
sub foo {'foo'}
}
AUTHOR
alexbyk.com
COPYRIGHT AND LICENSE
This software is copyright (c) 2016 by alexbyk.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.