]> git.vpit.fr Git - perl/modules/LaTeX-TikZ.git/blobdiff - lib/LaTeX/TikZ/Set/Path.pm
Remove magic LaTeX::TikZ::Interface->import
[perl/modules/LaTeX-TikZ.git] / lib / LaTeX / TikZ / Set / Path.pm
index b8d976827d04bd3431c7df07fed8d01c6295d2da..5a9e59c283432bd5b814cb52fc4b28fd15ba22a9 100644 (file)
@@ -15,6 +15,9 @@ Version 0.01
 
 our $VERSION = '0.01';
 
+use LaTeX::TikZ::Interface;
+use LaTeX::TikZ::Functor;
+
 use Any::Moose;
 use Any::Moose 'Util::TypeConstraints'
                => [ qw/subtype as where find_type_constraint/ ];
@@ -42,9 +45,9 @@ my $ltspe_tc = find_type_constraint('LaTeX::TikZ::Set::Path::Elements');
 sub add {
  my $set = shift;
 
- $ltspe_tc->check($_) for @_;
+ $ltspe_tc->assert_valid($_) for @_;
 
- push @{$_[0]->_ops}, @_;
+ push @{$set->_ops}, @_;
 
  $set;
 }
@@ -55,11 +58,20 @@ sub path {
  join ' ', map $_->path(@_), $set->ops;
 }
 
-use LaTeX::TikZ::API path => sub {
- shift;
+LaTeX::TikZ::Interface->register(
+ path => sub {
+  shift;
+
+  __PACKAGE__->new(ops => \@_);
+ },
+);
 
- __PACKAGE__->new(ops => \@_);
-};
+LaTeX::TikZ::Functor->default_rule(
+ (__PACKAGE__) => sub {
+  my ($functor, $set, @args) = @_;
+  $set->new(ops => [ map $_->$functor(@args), $set->ops ])
+ }
+);
 
 __PACKAGE__->meta->make_immutable;