--- trunk/lib/Frey/Storage.pm 2008/08/12 22:28:40 170 +++ trunk/lib/Frey/Storage.pm 2008/11/26 17:57:58 539 @@ -1,8 +1,12 @@ package Frey::Storage; use Moose::Role; +with 'Frey::Path'; + #use YAML::Syck; # XXX doesn't play nice with Continuity use YAML qw/LoadFile DumpFile/; +use File::Slurp; +use Carp qw/croak carp/; =head2 store @@ -19,8 +23,14 @@ sub store { my $self = shift; my ( $filename, $data ) = @_; - $filename .= '.yml'; - DumpFile( $filename, $data ); + $self->mkbasepath( $filename ); + if ( $filename =~ m{\.ya?ml$}i ) { + DumpFile( $filename, $data ); + } else { + croak "without extension we can save only scalar data" if ref($data); + write_file( $filename, $data ); + } + carp "created $filename ", -s $filename; } =head2 load @@ -31,10 +41,15 @@ sub load { my ( $self, $filename ) = @_; - $filename .= '.yml'; return if ! -e $filename; + my $data; + if ( $filename =~ m{\.ya?ml}i ) { + $data = LoadFile( $filename ); + } else { + $data = read_file( $filename ); + } $self->storage_timestamp->{ $filename } = _path_time( $filename ); - LoadFile( $filename ); + return $data; } =head2 reload @@ -51,8 +66,7 @@ sub reload { my ( $self, $filename ) = @_; - my $path = $filename . '.yml'; - return if defined $self->storage_timestamp->{ $path } && $self->storage_timestamp->{ $path } == _path_time( $path ); + return if defined $self->storage_timestamp->{ $filename } && $self->storage_timestamp->{ $filename } == _path_time( $filename ); warn "# reload $filename" if $self->debug; $self->load( $filename ); }