Mercurial > pub > Impl
diff lib/IMPL/Object/Meta.pm @ 407:c6e90e02dd17 ref20150831
renamed Lib->lib
author | cin |
---|---|
date | Fri, 04 Sep 2015 19:40:23 +0300 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/IMPL/Object/Meta.pm Fri Sep 04 19:40:23 2015 +0300 @@ -0,0 +1,50 @@ +package IMPL::Object::Meta; +use strict; +use warnings; + +use IMPL::Const qw(:prop); +use IMPL::declare { + base => [ + 'IMPL::Object' => undef + ], + props => [ + owner => PROP_RO + ] +}; + +sub meta { + my $class = shift; + my $caller = caller; + my $meta = $class->surrogate(); + $meta->owner(scalar caller); + $meta->callCTOR(@_); + $caller->SetMeta($meta); +} + +1; + +__END__ + +=pod + +=head1 SYNOPSIS + +package Foo; + +meta BarAttribute('Simple bar attribute'); #mark Foo with BarAttribute + +=head1 DESCRIPTION + +Базовый класс для мета-свойств класса. Определяет оператор C< meta > для создания метаданных в вызвавшем классе. + +=head1 MEMBERS + +=over + +=item C< Container > + +Свойство заполняется до вызова конструктора и содержит имя модуля к которому применяется атрибут. + +=back + +=cut