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} || [];