X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FApp%2FIdiotBox%2FDataSet.pm;fp=lib%2FApp%2FIdiotBox%2FDataSet.pm;h=0057d13cb8a0324dd1656d5d2855ecba1acf920f;hb=ebba317f0281d7818fff5584f3b202e30c53182f;hp=b23836481427b33c42e25072621d9b41524181e9;hpb=998cc52c6620a1c21669d7a3c28eb305c1c8f9ea;p=catagits%2FApp-IdiotBox.git diff --git a/lib/App/IdiotBox/DataSet.pm b/lib/App/IdiotBox/DataSet.pm index b238364..0057d13 100644 --- a/lib/App/IdiotBox/DataSet.pm +++ b/lib/App/IdiotBox/DataSet.pm @@ -22,9 +22,32 @@ sub _inflate { sub _deflate { my ($self, $obj) = @_; - $self->_class->{deflate}->($self, $obj) + my $fat_raw = $self->_class->{deflate}->($self, $obj); + $self->_splat($fat_raw) } -sub _merge { die "no" } +sub _splat { + my ($self, $fat) = @_; + my %raw; + foreach my $key (keys %$fat) { + my $v = $fat->{$key}; + $v = { %$v } if blessed($v); + if (ref($v) eq 'HASH') { + #my $splat = $self->_splat($v); + my $splat = $v; + @raw{map "${key}.$_", keys %$splat} = values %$splat; + } else { + $raw{$key} = $v; + } + } + \%raw +} + +sub _merge { + my ($self, $new, $to_merge) = @_; +#require Carp; warn Carp::longmess; warn $new; warn $to_merge; + @{$new}{keys %$to_merge} = values %$to_merge; + return +} 1;