Mercurial > pub > Impl
comparison lib/IMPL/Object/Meta.pm @ 407:c6e90e02dd17 ref20150831
renamed Lib->lib
author | cin |
---|---|
date | Fri, 04 Sep 2015 19:40:23 +0300 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
406:f23fcb19d3c1 | 407:c6e90e02dd17 |
---|---|
1 package IMPL::Object::Meta; | |
2 use strict; | |
3 use warnings; | |
4 | |
5 use IMPL::Const qw(:prop); | |
6 use IMPL::declare { | |
7 base => [ | |
8 'IMPL::Object' => undef | |
9 ], | |
10 props => [ | |
11 owner => PROP_RO | |
12 ] | |
13 }; | |
14 | |
15 sub meta { | |
16 my $class = shift; | |
17 my $caller = caller; | |
18 my $meta = $class->surrogate(); | |
19 $meta->owner(scalar caller); | |
20 $meta->callCTOR(@_); | |
21 $caller->SetMeta($meta); | |
22 } | |
23 | |
24 1; | |
25 | |
26 __END__ | |
27 | |
28 =pod | |
29 | |
30 =head1 SYNOPSIS | |
31 | |
32 package Foo; | |
33 | |
34 meta BarAttribute('Simple bar attribute'); #mark Foo with BarAttribute | |
35 | |
36 =head1 DESCRIPTION | |
37 | |
38 Базовый класс для мета-свойств класса. Определяет оператор C< meta > для создания метаданных в вызвавшем классе. | |
39 | |
40 =head1 MEMBERS | |
41 | |
42 =over | |
43 | |
44 =item C< Container > | |
45 | |
46 Свойство заполняется до вызова конструктора и содержит имя модуля к которому применяется атрибут. | |
47 | |
48 =back | |
49 | |
50 =cut |