backcompat for NEXT in &COMPONENT + test
[catagits/Catalyst-Runtime.git] / lib / Catalyst / ClassData.pm
CommitLineData
a7caa492 1package Catalyst::ClassData;
2
3use Moose::Role;
4use Scalar::Util 'blessed';
5
6sub mk_classdata {
7 my ($declaredclass, $attribute, $data) = @_;
8 confess("mk_classdata() is a class method, not an object method")
9 if ref $declaredclass;
10
11 my $accessor = sub {
12 my $wantclass = blessed($_[0]) || $_[0];
13
14 return $wantclass->mk_classdata($attribute)->(@_)
15 if @_>1 && $wantclass ne $declaredclass;
16
17 $data = $_[1] if @_>1;
18 return $data;
19 };
20
21 my $alias = "_${attribute}_accessor";
22 $declaredclass->meta->add_method($alias, $accessor);
23 $declaredclass->meta->add_method($attribute, $accessor);
24 return $accessor;
25}
26
271;
28
29__END__