]> git.vpit.fr Git - perl/modules/LaTeX-TikZ.git/blobdiff - lib/LaTeX/TikZ/Set/Sequence.pm
This is 0.02
[perl/modules/LaTeX-TikZ.git] / lib / LaTeX / TikZ / Set / Sequence.pm
index a430fe5415fdc1894a619f49fac87942bba2aac6..dfb30f73e19799542d05091a9847d11adbc34b79 100644 (file)
@@ -9,20 +9,29 @@ LaTeX::TikZ::Set::Sequence - A set object grouping a sequence of objects.
 
 =head1 VERSION
 
-Version 0.01
+Version 0.02
 
 =cut
 
-our $VERSION = '0.01';
+our $VERSION = '0.02';
 
 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/ ];
 
+=head1 RELATIONSHIPS
+
+This class consumes the L<LaTeX::TikZ::Set> and L<LaTeX::TikZ::Set::Mutable> roles, and as such implements the L</draw> and L</add> methods.
+
+=cut
+
 with qw(
  LaTeX::TikZ::Set
  LaTeX::TikZ::Set::Mutable
@@ -35,6 +44,14 @@ subtype 'LaTeX::TikZ::Set::Sequence::Elements'
           or $_->isa('LaTeX::TikZ::Set::Sequence')
      };
 
+=head1 ATTRIBUTES
+
+=head2 C<kids>
+
+The L<LaTeX::TikZ::Set::Op> or L<LaTeX::TikZ::Set::Sequence> objects that from the sequence.
+
+=cut
+
 has '_kids' => (
  is       => 'ro',
  isa      => 'Maybe[ArrayRef[LaTeX::TikZ::Set::Sequence::Elements]]',
@@ -44,6 +61,12 @@ has '_kids' => (
 
 sub kids { @{$_[0]->_kids} }
 
+=head1 METHODS
+
+=head2 C<add>
+
+=cut
+
 my $ltsse_tc = find_type_constraint('LaTeX::TikZ::Set::Sequence::Elements');
 
 sub add {
@@ -56,6 +79,10 @@ sub add {
  $set;
 }
 
+=head2 C<draw>
+
+=cut
+
 sub draw {
  my $set = shift;
 
@@ -64,14 +91,27 @@ sub draw {
    $set->kids;
 }
 
-use LaTeX::TikZ::API seq => sub {
- shift;
+LaTeX::TikZ::Interface->register(
+ seq => sub {
+  shift;
 
- __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;
 
+=head1 SEE ALSO
+
+L<LaTeX::TikZ>, L<LaTeX::TikZ::Set::Op>, L<LaTeX::TikZ::Set::Mutable>.
+
 =head1 AUTHOR
 
 Vincent Pit, C<< <perl at profvince.com> >>, L<http://www.profvince.com>.