=head1 VERSION
-Version 0.01
+Version 0.02
=cut
-our $VERSION = '0.01';
+our $VERSION = '0.02';
use List::Util ();
use LaTeX::TikZ::Interface;
use LaTeX::TikZ::Functor;
-use Any::Moose;
-use Any::Moose 'Util::TypeConstraints'
- => [ qw/subtype as where find_type_constraint/ ];
+use Mouse;
+use Mouse::Util::TypeConstraints qw<subtype as where find_type_constraint>;
=head1 RELATIONSHIPS
-This class consumes the L<LaTeX::TikZ::Set> and L<LaTeX::TikZ::Set::Mutable> roles, and as such implements the L</draw> and L</add> methods.
+This class consumes the L<LaTeX::TikZ::Set> and L<LaTeX::TikZ::Set::Container> roles, and as such implements the L</draw>, L</kids> and L</add> methods.
=cut
-with qw(
+with qw<
LaTeX::TikZ::Set
- LaTeX::TikZ::Set::Mutable
-);
+ LaTeX::TikZ::Set::Container
+>;
subtype 'LaTeX::TikZ::Set::Sequence::Elements'
=> as 'Object'
=> where {
- $_->does('LaTeX::TikZ::Set::Op')
+ $_->does('LaTeX::TikZ::Set::Path')
or $_->isa('LaTeX::TikZ::Set::Sequence')
};
=head2 C<kids>
-The L<LaTeX::TikZ::Set::Op> or L<LaTeX::TikZ::Set::Sequence> objects that from the sequence.
+The L<LaTeX::TikZ::Set::Path> or L<LaTeX::TikZ::Set::Sequence> objects that from the sequence.
=cut
sub draw {
my $set = shift;
+ my @kids = $set->kids;
+ return [ ] unless @kids;
+
List::Util::reduce { LaTeX::TikZ::Scope::fold($a, $b) }
map $_->draw(@_),
- $set->kids;
+ @kids;
}
LaTeX::TikZ::Interface->register(
=head1 SEE ALSO
-L<LaTeX::TikZ>, L<LaTeX::TikZ::Set::Op>, L<LaTeX::TikZ::Set::Mutable>.
+L<LaTeX::TikZ>, L<LaTeX::TikZ::Set::Path>, L<LaTeX::TikZ::Set::Container>.
=head1 AUTHOR