bugfixes, tweaks, map support
[dbsrgits/DBIx-Data-Store.git] / lib / DBIx / Data / Collection / Set / Mapped.pm
CommitLineData
967a2b04 1package DBIx::Data::Collection::Set::Mapped;
2
3use strictures 1;
4
5use DBIx::Data::Stream::Mapped;
6
7sub new {
8 my $proto = shift;
9 bless({ %{$_[0]} }, ref($proto)||$proto);
10}
11
12sub _inner { shift->{inner} }
13sub _mapper { shift->{mapper} }
14
15sub flatten {
16 my ($self) = @_;
17 map $self->_do_map($_), $self->_inner->flatten;
18}
19
20sub to_stream {
21 my ($self) = @_;
22 my $mapper = $self->_mapper;
23 DBIx::Data::Stream::Mapped->new({
24 inner => $self->_inner->to_stream,
25 mapper => $self->_mapper
26 });
27}
28
29sub get {
30 my ($self, $spec) = @_;
31 if (my $got = $self->_inner->get($spec)) {
32 return $self->_do_map($got);
33 }
34 return undef;
35}
36
37sub _do_map {
38 my ($self, $to_map) = @_;
39 local $_ = $to_map;
40 $self->_mapper->($to_map);
41}
42
431;