X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FData%2FCollection%2FSet.pm;fp=lib%2FDBIx%2FData%2FCollection%2FSet.pm;h=3e965bacc7423da83c21fbbdf975e1b304120d07;hb=7cd0d8a945852181bc4a87bb767743ef6358437c;hp=a6188f4ccf4d554f8715f9229fe591480fd8d494;hpb=4b4cd5bdd9ad50c2f50e49cd3ff8e83dd19771db;p=dbsrgits%2FDBIx-Data-Store-old.git diff --git a/lib/DBIx/Data/Collection/Set.pm b/lib/DBIx/Data/Collection/Set.pm index a6188f4..3e965ba 100644 --- a/lib/DBIx/Data/Collection/Set.pm +++ b/lib/DBIx/Data/Collection/Set.pm @@ -3,6 +3,7 @@ package DBIx::Data::Collection::Set; use Moose; use Method::Signatures::Simple; use Data::Perl::Stream::Array; +use Data::Perl::Collection::Set; use Scalar::Util qw(weaken refaddr); has _store => (is => 'ro', required => 1, init_arg => 'store'); @@ -212,6 +213,20 @@ method as_stream { Data::Perl::Stream::Array->new(array => $self->_member_cache); } +# theoretically inefficient except that if we're being asked this then +# either the data should have been pre-loaded or we're going to get all +# elements anyway + +method count { + scalar $self->flatten +} + +method map ($sub) { + Data::Perl::Collection::Set->new( + members => [ map $sub->($_), $self->flatten ] + ) +} + method _set_caches ($members) { $self->_set_member_cache($members); $self->_set_key_cache_members($members);