/[Frey]/branches/mojo/lib/Frey/Storage.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /branches/mojo/lib/Frey/Storage.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/lib/Frey/Storage.pm revision 151 by dpavlin, Wed Jul 16 23:04:22 2008 UTC branches/mojo/lib/Frey/Storage.pm revision 260 by dpavlin, Tue Nov 4 22:12:07 2008 UTC
# Line 1  Line 1 
1  package Frey::Storage;  package Frey::Storage;
2  use Moose::Role;  use Moose::Role;
3    
4  use YAML::Syck;  with 'Frey::Path';
5    
6    #use YAML::Syck; # XXX doesn't play nice with Continuity
7    use YAML qw/LoadFile DumpFile/;
8    
9  =head2 store  =head2 store
10    
# Line 18  has 'storage_timestamp' => ( Line 21  has 'storage_timestamp' => (
21  sub store {  sub store {
22          my $self = shift;          my $self = shift;
23          my ( $filename, $data ) = @_;          my ( $filename, $data ) = @_;
24          $filename .= '.yml';          $filename .= '.yml' unless $filename =~ m{\.ya?ml$}i;
25            $self->mkbasepath( $filename );
26          DumpFile( $filename, $data );          DumpFile( $filename, $data );
27            warn "created $filename ", -s $filename;
28  }  }
29    
30  =head2 load  =head2 load
# Line 31  sub store { Line 36  sub store {
36  sub load {  sub load {
37          my ( $self, $filename ) = @_;          my ( $self, $filename ) = @_;
38          $filename .= '.yml';          $filename .= '.yml';
39            return if ! -e $filename;
40          $self->storage_timestamp->{ $filename } = _path_time( $filename );          $self->storage_timestamp->{ $filename } = _path_time( $filename );
41          LoadFile( $filename );          LoadFile( $filename );
42  }  }
# Line 39  sub load { Line 45  sub load {
45    
46  Reload file if on-disk copy have changed  Reload file if on-disk copy have changed
47    
48    $o->reload( 'filename.yml', \$data );    my $new_data = $o->reload( 'filename.yml' );
49    
50  =cut  =cut
51    
# Line 48  sub _path_time { Line 54  sub _path_time {
54  }  }
55    
56  sub reload {  sub reload {
57          my ( $self, $filename, $data ) = @_;          my ( $self, $filename ) = @_;
58          my $path = $filename . '.yml';          my $path = $filename . '.yml';
59          return if ( $self->storage_timestamp->{ $path } == _path_time( $path ) );          return if defined $self->storage_timestamp->{ $path } && $self->storage_timestamp->{ $path } == _path_time( $path );
60          warn "# reload $filename" if $self->debug;          warn "# reload $filename" if $self->debug;
61          $$data = $self->load( $filename );          $self->load( $filename );
         $data;  
62  }  }
63    
64  1;  1;

Legend:
Removed from v.151  
changed lines
  Added in v.260

  ViewVC Help
Powered by ViewVC 1.1.26