1 package MooseX::Meta::TypeConstraint::Structured::Generator;
8 use base 'Moose::Meta::TypeConstraint';
9 use Moose::Util::TypeConstraints ();
11 __PACKAGE__->meta->add_attribute('structured_type' => (
12 accessor => 'structured_type',
13 predicate => 'has_structured_type',
16 sub _parse_type_parameter {
17 my ($self, $type_str) = @_;
18 return $self->structured_type->_parse_type_parameter($type_str);
22 my ($self, $parameter_string) = @_;
23 my @contained_tcs = $self->_parse_type_parameter($parameter_string);
24 my $tc_name = $self->name .'['. join(',', map {$_->name} @contained_tcs) .']';
26 return $self->structured_type->new(
28 parent => $self->parent,
29 package_defined_in => __PACKAGE__,
30 signature => \@contained_tcs,