Author: dylan
Date: 2004-06-20 21:55:48 -0400 (Sun, 20 Jun 2004)
New Revision: 242

Modified:
   trunk/main/common/lib/Haver/Savable.pm
Log:
Moved saving and loading routines to write_file and read_file methods.
This allows subclasses to change the format of Savable objects.

In the future maybe Savable objects will use XML::Dumper or Data::Dumper
instead of YAML... Or Storable, perhaps.



Modified: trunk/main/common/lib/Haver/Savable.pm
===================================================================
--- trunk/main/common/lib/Haver/Savable.pm      2004-06-18 03:44:27 UTC (rev 
241)
+++ trunk/main/common/lib/Haver/Savable.pm      2004-06-21 01:55:48 UTC (rev 
242)
@@ -18,9 +18,8 @@
 package Haver::Savable;
 use strict;
 use Haver::Preprocessor;
-#use warnings;
+
 use base qw( Haver::Base );
-use YAML ();
 use Fatal qw(:void open close);
 use File::stat ();
 use File::Basename ();
@@ -28,7 +27,7 @@
 
 use Carp;
 
-our $VERSION = '0.02';
+our $VERSION = 0.02;
 our $RELOAD = 1;
 
 sub initialize {
@@ -46,8 +45,7 @@
        #DEBUG(obj): "Loading $me";
        #ASSERT: defined $filename;
        if (-e $filename) {
-               my $raw  = _slurp($filename);
-               my $data = YAML::Load($raw);
+               my $data = $me->read_file($filename);
                $me->_init_data;
                $me->{_mtime} = File::stat::populate(CORE::stat(_))->mtime;
                return $me->_load_data($data);
@@ -59,6 +57,11 @@
 
 }
 
+sub read_file {
+       my ($me, $file) = @_;
+       my $data = _slurp($file);
+       YAML::Load($data);
+}
 
 # This slurps in the entire file.
 sub _slurp {
@@ -93,11 +96,8 @@
        File::Path::mkpath($me->directory);
        
        if ($me->{_overwrite} or ($mtime == $me->{_mtime})) {
-               my $fh;
                my $save = $me->_save_data or return 0;
-               open $fh, ">$filename";
-               print $fh YAML::Dump($save);
-               close $fh;
+               $me->write_file($filename, $save);
                $me->{_mtime} = File::stat::stat($filename)->mtime;
                #DEBUG(obj): "Saving $me";
                return 1;
@@ -107,6 +107,15 @@
        }       
 }
 
+sub write_file {
+       my ($me, $file, $data) = @_;
+       my $fh;
+       open $fh, '>', $file;
+       print $fh YAML::Dump($data);
+       close $fh;
+}
+
+
 sub overwrite {
        my ($me, $val) = @_;
        #ASSERT: @_ == 1 or @_ == 2;
@@ -126,8 +135,6 @@
 
 sub finalize {
        my ($me) = @_;
-
-
 }
 
 


Reply via email to