our $VERSION = '0.01';
-use List::Util ();
+use Scalar::Util ();
+use List::Util ();
use LaTeX::TikZ::Mod::Formatted;
if (defined $name) {
$self->meta->find_attribute_by_name('name')
->type_constraint->assert_valid($name);
- confess("Can't redefine layer '$name'") if keys(%args) > 1;
my $layer = $layers{$name};
- return $layer if defined $layer;
+ if (defined $layer) {
+ confess("Can't redefine layer '$name'") if keys(%args) > 1;
+ return $layer;
+ }
}
return $self->$orig(%args);
sub BUILD {
my ($self) = @_;
- $layers{$self->name} = $self;
+ my $name = $self->name;
+ $layers{$name} = $self;
+ Scalar::Util::weaken($layers{$name});
}
sub DEMOLISH {
)
}
-use LaTeX::TikZ::API layer => sub {
+use LaTeX::TikZ::Interface layer => sub {
shift;
- __PACKAGE__->new(name => $_[0]);
+ my $name = shift;
+ __PACKAGE__->new(name => $name, @_);
};
__PACKAGE__->meta->make_immutable(