moving things around
[gitmo/MooseX-Storage.git] / lib / MooseX / Storage / Format / JSON.pm
1
2 package MooseX::Storage::JSON;
3 use Moose::Role;
4
5 use JSON::Syck ();
6 use MooseX::Storage::Engine;
7
8 sub pack {
9     my $self = shift;
10     my $e = MooseX::Storage::Engine->new( object => $self );
11     $e->collapse_object;
12 }
13
14 sub unpack {
15     my ( $class, $data ) = @_;
16     my $e = MooseX::Storage::Engine->new( class => $class );
17     $class->new( $e->expand_object($data) );
18 }
19
20 sub thaw {
21     my ( $class, $json ) = @_;
22     $class->unpack( JSON::Syck::Load($json) );
23 }
24
25 sub freeze {
26     my $self = shift;
27     JSON::Syck::Dump( $self->pack() );
28 }
29
30 1;
31
32 __END__
33
34 =pod
35
36 =cut
37