Attempt #1 to pass traits through property.

This commit is contained in:
Colin Kuskie 2010-03-11 13:40:00 -08:00
parent b24978ef81
commit f4467cb10f

View file

@ -53,21 +53,18 @@ sub add_property {
if (! (exists $options{noFormPost} || exists $options{label}) ) { if (! (exists $options{noFormPost} || exists $options{label}) ) {
Moose->throw_error("Must pass either noFormPost or label when making a property"); Moose->throw_error("Must pass either noFormPost or label when making a property");
} }
my %form_options; $options{traits} ||= [];
my $prop_meta_roles = $self->property_metaroles; push @{ $options{traits} }, @{ $self->property_metaroles };
my $prop_meta = $self->_property_metaclass; my $prop_meta = Moose::Meta::Attribute->interpolate_class(\%options);
my %form_options = ();
for my $key ( keys %options ) { for my $key ( keys %options ) {
if ( ! $prop_meta->find_attribute_by_name($key) ) { if ( ! $prop_meta->meta->find_attribute_by_name($key) ) {
$form_options{$key} = delete $options{$key}; $form_options{$key} = delete $options{$key};
} }
} }
$self->add_attribute( $options{is} = 'rw';
$name, $options{form} = \%form_options;
is => 'rw', $self->add_attribute( $name, %options );
traits => $prop_meta_roles,
form => \%form_options,
%options,
);
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------
@ -199,21 +196,5 @@ has property_metaroles => (
default => sub { ['WebGUI::Definition::Meta::Property' ] }, default => sub { ['WebGUI::Definition::Meta::Property' ] },
); );
has _property_metaclass => (
is => 'ro',
lazy => 1,
builder => '_build_property_metaclass',
);
sub _build_property_metaclass {
my $self = shift;
my $class = Moose::Meta::Class->create_anon_class(
superclasses => [ $self->attribute_metaclass ],
roles => $self->property_metaroles,
cache => 1,
);
return $class;
}
1; 1;