NAME

Evo - Evo - the next generation component-oriented development framework

VERSION

version 0.0187

DESCRIPTION

This framowerk opens new age of perl programming It provides rewritten and postmodern features like

  • Rewritten sexy Evo::Export

  • Post modern component oriented programming Evo::Comp instead of OO

  • (no docs yet) Fast Event-Loop Evo::Loop with unique feature zones (Not ready)

  • (no docs yet) Fast non recursive Evo::Promises, 100% Promises/Spec A compatible

  • Interesting Evo::Realm design pattern, which is as handy as "Singleton" but without Sintleton's flaws. Testable and mockable alternative of the global class

  • Exception handling in pure perl: Evo::Eval, "try catch" alternative. Like Try::Tiny, but without it's bugs and much faster

  • Evo::Ee - a component role that gives your component "EventEmitter" abilities

SYNOPSYS

# enables strict, warnings, utf8, :5.22, signatured, postderef
use Evo;

IMPORTING

Load Module and call it's import method, emulating caller.

use Evo 'Evo::SomeComp';
use Evo 'Evo::SomeComp(function)';
use Evo 'Evo::SomeComp(function,otherfunc)';
use Evo 'Evo::SomeComp function1 function2';

Used to make package header shorter

use Evo '-Eval *; My::App';

SHORTCUTS

: => . (append to current)
:: => .. (append to parent)
- => Evo (append to Evo)

shortcuts

Shortcuts are used to make life easily during code refactoring (and you module shorter) in Evo::Export and "with" in Evo::Comp

- is replaced by Evo

use Evo '-Promises promise'; # "Evo::Promises promise"

: and :: make sense in the package and depends on the package name where is used

: means relative to the current module as a child

package My::App;
use Evo ':Bar'; # My::App::Bar

:: means as sibling (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 make some test and decided that using 5.22 and experimental features brings many benefits and 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

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.