Mercurial > pub > Impl
changeset 279:af8af4b8337e
sync
author | sergey |
---|---|
date | Mon, 04 Feb 2013 17:16:45 +0400 |
parents | 4ddb27ff4a0b |
children | c6d0f889ef87 |
files | Lib/IMPL/Class/Meta.pm Lib/IMPL/declare.pm |
diffstat | 2 files changed, 9 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/Lib/IMPL/Class/Meta.pm Mon Feb 04 02:10:37 2013 +0400 +++ b/Lib/IMPL/Class/Meta.pm Mon Feb 04 17:16:45 2013 +0400 @@ -1,7 +1,7 @@ package IMPL::Class::Meta; use strict; -use Carp qw(carp); +use Carp qw(carp confess); use IMPL::clone qw(clone); my %class_meta; @@ -9,11 +9,11 @@ sub SetMeta { my ($class,$meta_data) = @_; - $class = ref $class if ref $class; + $class = ref $class || $class; # тут нельзя использовать стандартное исключение, поскольку для него используется # класс IMPL::Object::Accessor, который наследуется от текущего класса - die "The meta_data parameter should be an object" if not ref $meta_data; + confess "The meta_data parameter should be an object" if not ref $meta_data; push @{$class_meta{$class}{ref $meta_data}},$meta_data; }
--- a/Lib/IMPL/declare.pm Mon Feb 04 02:10:37 2013 +0400 +++ b/Lib/IMPL/declare.pm Mon Feb 04 17:16:45 2013 +0400 @@ -73,8 +73,12 @@ } } - *{"${caller}::CTOR"} = \%ctor; - *{"${caller}::ISA"} = \@isa; + %{"${caller}::CTOR"} = %ctor; + push @{"${caller}::ISA"}, @isa; + + if(ref($args->{meta}) eq 'ARRAY') { + $caller->SetMeta($_) foreach @{$args->{meta}}; + } my $props = $args->{props} || [];