]> git.vpit.fr Git - perl/modules/LaTeX-TikZ.git/blobdiff - lib/LaTeX/TikZ/Set/Sequence.pm
Remove magic LaTeX::TikZ::Interface->import
[perl/modules/LaTeX-TikZ.git] / lib / LaTeX / TikZ / Set / Sequence.pm
index 3f14bb7a78a4dba17f6364eaed1e00315436499b..0bf9222d28e1e0f38a30b45959aeb0ee219e6b68 100644 (file)
@@ -17,6 +17,11 @@ our $VERSION = '0.01';
 
 use List::Util ();
 
+use LaTeX::TikZ::Scope;
+
+use LaTeX::TikZ::Interface;
+use LaTeX::TikZ::Functor;
+
 use Any::Moose;
 use Any::Moose 'Util::TypeConstraints'
                => [ qw/subtype as where find_type_constraint/ ];
@@ -31,7 +36,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' => (
@@ -58,16 +62,25 @@ sub add {
 sub draw {
  my $set = shift;
 
- List::Util::reduce { $a . $b } map $_->draw(@_), $set->kids;
+ List::Util::reduce { LaTeX::TikZ::Scope::fold($a, $b) }
+  map $_->draw(@_),
+   $set->kids;
 }
 
-use LaTeX::TikZ::API seq => sub {
- shift;
+LaTeX::TikZ::Interface->register(
+ seq => sub {
+  shift;
 
- die 'wut' if $_[0]->isa('LaTeX::TikZ::Set::Op');
+  __PACKAGE__->new(kids => \@_);
+ },
+);
 
- __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;