]> git.vpit.fr Git - perl/modules/LaTeX-TikZ.git/blobdiff - lib/LaTeX/TikZ/Set/Sequence.pm
Introduce LaTeX::TikZ::Functor
[perl/modules/LaTeX-TikZ.git] / lib / LaTeX / TikZ / Set / Sequence.pm
index 7742435548c12366c2a0385d2f4808fc551977ad..a92ad89d7dd93e267870cefa4a046047575688c9 100644 (file)
@@ -19,6 +19,8 @@ use List::Util ();
 
 use LaTeX::TikZ::Scope;
 
+use LaTeX::TikZ::Functor;
+
 use Any::Moose;
 use Any::Moose 'Util::TypeConstraints'
                => [ qw/subtype as where find_type_constraint/ ];
@@ -33,7 +35,6 @@ subtype 'LaTeX::TikZ::Set::Sequence::Elements'
      => where {
              $_->does('LaTeX::TikZ::Set::Op')
           or $_->isa('LaTeX::TikZ::Set::Sequence')
-          or $_->isa('LaTeX::TikZ::Set::Mod')
      };
 
 has '_kids' => (
@@ -65,12 +66,19 @@ sub draw {
    $set->kids;
 }
 
-use LaTeX::TikZ::API seq => sub {
+use LaTeX::TikZ::Interface seq => sub {
  shift;
 
  __PACKAGE__->new(kids => \@_);
 };
 
+LaTeX::TikZ::Functor->default_rule(
+ (__PACKAGE__) => sub {
+  my ($functor, $set, @args) = @_;
+  $set->new(kids => [ map $_->$functor(@args), $set->kids ])
+ }
+);
+
 __PACKAGE__->meta->make_immutable;
 
 =head1 AUTHOR