--- trunk/lib/Frey/Storage.pm 2008/11/05 08:21:05 294 +++ trunk/lib/Frey/Storage.pm 2008/11/05 09:50:14 301 @@ -5,6 +5,8 @@ #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 @@ -21,10 +23,14 @@ sub store { my $self = shift; my ( $filename, $data ) = @_; - $filename .= '.yml' unless $filename =~ m{\.ya?ml$}i; - $self->mkbasepath( $filename ); - DumpFile( $filename, $data ); - warn "created $filename ", -s $filename; + if ( $filename =~ m{\.ya?ml$}i ) { + $self->mkbasepath( $filename ); + 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 @@ -35,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 @@ -55,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 ); }