]> git.vpit.fr Git - perl/modules/LaTeX-TikZ.git/commitdiff
Coerce points from common types
authorVincent Pit <vince@profvince.com>
Tue, 20 Jul 2010 19:50:41 +0000 (21:50 +0200)
committerVincent Pit <vince@profvince.com>
Tue, 20 Jul 2010 19:50:41 +0000 (21:50 +0200)
lib/LaTeX/TikZ/Point.pm
lib/LaTeX/TikZ/Set/Point.pm
t/11-point.t

index 3c2446915862b778d360e4530ad29281022b9df6..316624860c33e0ad95985437b176ccd3af609edb 100644 (file)
@@ -49,6 +49,14 @@ coerce 'LaTeX::TikZ::Point::Autocoerce'
     => from 'LaTeX::TikZ::Point'
     => via { $_ };
 
+coerce 'LaTeX::TikZ::Point::Autocoerce'
+    => from 'Num'
+    => via { LaTeX::TikZ::Point->new(x => $_, y => 0) };
+
+coerce 'LaTeX::TikZ::Point::Autocoerce'
+    => from 'ArrayRef'
+    => via { LaTeX::TikZ::Point->new(x => $_->[0], y => $_->[1]) };
+
 __PACKAGE__->meta->make_immutable;
 
 =head1 AUTHOR
index 58fb28c741a073b565512841ecba24a17a994abb..c4749fe66ab879f51aa426fc3b01b0201621950e 100644 (file)
@@ -39,7 +39,7 @@ sub path {
 use LaTeX::TikZ::Interface point => sub {
  shift;
 
- __PACKAGE__->new(point => $_[0]);
+ __PACKAGE__->new(point => @_ > 1 ? \@_ : $_[0] );
 };
 
 __PACKAGE__->meta->make_immutable;
index c7f53cdf11adceee590bffc31cafd1f7a3ff1134..9e73f15c89b6d47ba2d578eb24525457eff7e721 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 1 + 2 * 1;
+use Test::More tests => 5 + 2 * 5;
 
 use Math::Complex;
 
@@ -42,3 +42,39 @@ is $@, '', 'creating a point from a Math::Complex object doesn\'t croak';
 check $p, 'a point from a Math::Complex object', <<'RES';
 \draw (1cm,2cm) ;
 RES
+
+$p = eval {
+ Tikz->point(1-2*i);
+};
+is $@, '', 'creating a point from a Math::Complex constant object doesn\'t croak';
+
+check $p, 'a point from a constant Math::Complex object', <<'RES';
+\draw (1cm,-2cm) ;
+RES
+
+$p = eval {
+ Tikz->point(-7);
+};
+is $@, '', 'creating a point from a numish constant doesn\'t croak';
+
+check $p, 'a point from a numish constant', <<'RES';
+\draw (-7cm,0cm) ;
+RES
+
+$p = eval {
+ Tikz->point(5,-1);
+};
+is $@, '', 'creating a point from two numish constants doesn\'t croak';
+
+check $p, 'a point from two numish constants', <<'RES';
+\draw (5cm,-1cm) ;
+RES
+
+$p = eval {
+ Tikz->point([-3, 2]);
+};
+is $@, '', 'creating a point from an array ref doesn\'t croak';
+
+check $p, 'a point from an array ref', <<'RES';
+\draw (-3cm,2cm) ;
+RES