foo
[gitmo/MooseX-Storage.git] / lib / MooseX / Storage / Basic.pm
index 24a39ac..2a610c9 100644 (file)
@@ -4,16 +4,18 @@ use Moose::Role;
 
 use MooseX::Storage::Engine;
 
+our $VERSION = '0.01';
+
 sub pack {
-    my $self = shift;
+    my ( $self, @args ) = @_;
     my $e = MooseX::Storage::Engine->new( object => $self );
-    $e->collapse_object;
+    $e->collapse_object(@args);
 }
 
 sub unpack {
-    my ( $class, $data ) = @_;
+    my ( $class, $data, @args ) = @_;
     my $e = MooseX::Storage::Engine->new( class => $class );
-    $class->new( $e->expand_object($data) );
+    $class->new( $e->expand_object($data, @args) );
 }
 
 1;
@@ -24,12 +26,39 @@ __END__
 
 =head1 NAME
 
-MooseX::Storage::Basic
+MooseX::Storage::Basic - The simplest level of serialization
 
 =head1 SYNOPSIS
 
+  package Point;
+  use Moose;
+  use MooseX::Storage;
+  
+  our $VERSION = '0.01';
+  
+  with Storage;
+  
+  has 'x' => (is => 'rw', isa => 'Int');
+  has 'y' => (is => 'rw', isa => 'Int');
+  
+  1;
+  
+  my $p = Point->new(x => 10, y => 10);
+  
+  ## methods to pack/unpack an 
+  ## object in perl data structures
+  
+  # pack the class into a hash
+  $p->pack(); # { __CLASS__ => 'Point-0.01', x => 10, y => 10 }
+  
+  # unpack the hash into a class
+  my $p2 = Point->unpack({ __CLASS__ => 'Point-0.01', x => 10, y => 10 });
+
 =head1 DESCRIPTION
 
+This is the most basic form of serialization. This is used by default 
+but the exported C<Storage> function.
+
 =head1 METHODS
 
 =over 4