]> git.vpit.fr Git - perl/modules/LaTeX-TikZ.git/commitdiff
Also define a default functor rule for the new Polyline
authorVincent Pit <vince@profvince.com>
Wed, 22 Apr 2015 19:44:41 +0000 (16:44 -0300)
committerVincent Pit <vince@profvince.com>
Wed, 22 Apr 2015 19:49:25 +0000 (16:49 -0300)
Otherwise the Chain default rule is used instead, but it does not know how
to create a Polyline.

lib/LaTeX/TikZ/Set/Polyline.pm
t/30-functor.t

index f982e91e661b63c0c5cab6e59aebe277ddd07b41..627fd81080b7bd69e95430d0436afcd86cb1996d 100644 (file)
@@ -102,6 +102,16 @@ LaTeX::TikZ::Interface->register(
  },
 );
 
+LaTeX::TikZ::Functor->default_rule(
+ (__PACKAGE__) => sub {
+  my ($functor, $set, @args) = @_;
+  $set->new(
+   points => [ map $_->$functor(@args), $set->kids ],
+   closed => $set->closed,
+  );
+ }
+);
+
 __PACKAGE__->meta->make_immutable;
 
 =head1 SEE ALSO
index e455a9d6e1a59bdd73168c6e15257afa0d52097f..74ff18d727f489e771a7181ebdf784e03eb34204 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 10 + 2 * 7;
+use Test::More tests => 11 + 2 * 8;
 
 use LaTeX::TikZ;
 
@@ -78,6 +78,19 @@ check $seq2, 'the translated sequence', <<'RES';
 \end{scope}
 RES
 
+my $poly = Tikz->closed_polyline(
+ [ 0, 0 ], [ 1, 0 ], [ 1, 1 ], [ 0, 1 ]
+);
+
+my $poly2 = eval {
+ $poly->$translate(Tikz->point(-1, 1));
+};
+is $@, '', 'translating a polyline doesn\'t croak';
+
+check $poly2, 'the translated polyline', <<'RES';
+\draw (-1cm,1cm) -- (0cm,1cm) -- (0cm,2cm) -- (-1cm,2cm) -- cycle ;
+RES
+
 my $strip = eval {
  Tikz->functor(
   '+LaTeX::TikZ::Mod' => sub { return },