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) = @_;
-
-
}