X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;ds=sidebyside;f=lib%2FLaTeX%2FTikZ%2FSet%2FPath.pm;h=a0b822618b57e55c96f07ebc0413661d397b22c8;hb=1be10f0f8ab18b5c559d8a48270dda1ebd2d78bc;hp=86dfe446cf4a7504cc8357006b0d0a8c1d2e7afd;hpb=0f9d7c1a2d11bc7001fe450cb2086e67c13a39e9;p=perl%2Fmodules%2FLaTeX-TikZ.git
diff --git a/lib/LaTeX/TikZ/Set/Path.pm b/lib/LaTeX/TikZ/Set/Path.pm
index 86dfe44..a0b8226 100644
--- a/lib/LaTeX/TikZ/Set/Path.pm
+++ b/lib/LaTeX/TikZ/Set/Path.pm
@@ -5,103 +5,80 @@ use warnings;
=head1 NAME
-LaTeX::TikZ::Set::Path - A set object representing a path.
+LaTeX::TikZ::Set::Path - A role for set objects that can be part of a path.
=head1 VERSION
-Version 0.01
+Version 0.02
=cut
-our $VERSION = '0.01';
+our $VERSION = '0.02';
-use LaTeX::TikZ::Interface;
-use LaTeX::TikZ::Functor;
+=head1 DESCRIPTION
-use Any::Moose;
-use Any::Moose 'Util::TypeConstraints'
- => [ qw/subtype as where find_type_constraint/ ];
+Paths are all the elements against which we can call the C method.
+
+=cut
+
+use Mouse::Role;
=head1 RELATIONSHIPS
-This class consumes the L and L roles, and as such implements the L and L methods.
+This role consumes the L role, and as such implements the L method.
=cut
-with qw(
- LaTeX::TikZ::Set::Op
- LaTeX::TikZ::Set::Mutable
-);
+with 'LaTeX::TikZ::Set';
-=head1 ATTRIBUTES
+=head1 METHODS
-=head2 C
+These methods are required by the interface :
-The L objects that from the path.
+=over 4
-=cut
+=item *
-subtype 'LaTeX::TikZ::Set::Path::Elements'
- => as 'Object'
- => where { $_->does('LaTeX::TikZ::Set::Op') };
+C
-has '_ops' => (
- is => 'ro',
- isa => 'Maybe[ArrayRef[LaTeX::TikZ::Set::Path::Elements]]',
- init_arg => 'ops',
- default => sub { [ ] },
-);
+Returns the TikZ code that builds a path out of the current set object as a string formatted by the L object C<$formatter>.
+The current evaluation context is passed as the L object C<$context>.
-sub ops { @{$_[0]->_ops} }
+=item *
-=head1 METHODS
+C
-=head2 C
+Returns a L object pointing to the beginning of the path, or C if this path has no beginning.
-=cut
+=item *
-my $ltspe_tc = find_type_constraint('LaTeX::TikZ::Set::Path::Elements');
+C
-sub add {
- my $set = shift;
+A L object pointing to the end of the path, or C if this path has no end.
- $ltspe_tc->assert_valid($_) for @_;
+=back
- push @{$set->_ops}, @_;
+=cut
- $set;
-}
+requires qw<
+ path
+ begin
+ end
+>;
-=head2 C
+=head2 C
=cut
-sub path {
+sub draw {
my $set = shift;
- join ' ', map $_->path(@_), $set->ops;
+ [ "\\draw " . $set->path(@_) . ' ;' ];
}
-LaTeX::TikZ::Interface->register(
- path => sub {
- shift;
-
- __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;
-
=head1 SEE ALSO
-L, L, L.
+L, L.
=head1 AUTHOR
@@ -122,10 +99,10 @@ You can find documentation for this module with the perldoc command.
=head1 COPYRIGHT & LICENSE
-Copyright 2010 Vincent Pit, all rights reserved.
+Copyright 2010,2011,2012,2013,2014,2015 Vincent Pit, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
=cut
-1; # End of LaTeX::TikZ::Set::Path
+1; # End of LaTeX::TikZ::Set::Path;