The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Evo::Class::Meta

VERSION

version 0.0229

METHODS

register

Register a meta instance only once. The second invocation will return the same instance. But if it will be called from another subclass, die. This is a protection from the fool

Meta is stored in $Some::Class::META_CLASS global variable and lives as long as a package.

IMPLEMENTATION NOTES

overridden

"overridden" means this symbol will be skept during "extend_with" so if you marked something as overridden, you should define method or sub yourself too. This is not a problem with sub foo : Over {} or "reg_attr_over" because it marks symbol as overridden and also registers a symbol.

BUT!!! Calling "reg_attr_over" should be called

private

Mark something as private (even if it doesn't exist) to skip at from "public_*". But better use my sub foo {} feature

reg_method

All methods compiled in the class are public by default. But what to do if you make a method by monkey-patching or by extending? Use /reg_method

  package Foo;
  use Evo 'Scalar::Util(); -Class::Meta';
  my $meta = Evo::Class::Meta->register(__PACKAGE__);

  no warnings 'once';
  *lln = \&Scalar::Util::looks_like_number;

  # nothing, because lln was compiled in Scalar::Util
  say $meta->public_methods;

  # fix this
  $meta->reg_method('lln');
  say $meta->public_methods;

check_implementation

If implementation requires "attribute", "reg_attr" should be called before checking implementation

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.