add basic inflation wrapper and simple inflator
[dbsrgits/DBIx-Data-Store.git] / lib / DBIx / Data / Store / Inflator / Simple.pm
1 package DBIx::Data::Store::Inflator::Simple;
2
3 use strictures 1;
4
5 sub new {
6   my $proto = shift;
7   bless({ %{$_[0]} }, ref($proto)||$proto);
8 }
9
10 sub _class { shift->{class} }
11 sub _spec_columns { shift->{spec_columns} }
12 sub _body_columns { shift->{body_columns} }
13 sub _all_columns { shift->{all_columns} }
14
15 sub inflate {
16   my ($self, $raw) = @_;
17   my %new; @new{@{$self->_all_columns}} = @$raw;
18   bless(\%new, $self->_class);
19 }
20
21 sub deflate_spec {
22   my ($self, $spec) = @_;
23   [ @{$spec}{@{$self->_spec_columns}} ];
24 }
25
26 sub deflate_body {
27   my ($self, $spec) = @_;
28   [ @{$spec}{@{$self->_body_columns}} ];
29 }
30
31 1;