Author: dylan
Date: 2004-06-26 22:55:52 -0400 (Sat, 26 Jun 2004)
New Revision: 254
Modified:
trunk/main/common/lib/Haver/Config.pm
trunk/main/common/lib/Haver/Savable.pm
Log:
Haver::Config now uses bdonlan's merge_struct code for default =>
stuff.
These needs some smoke testing!
Modified: trunk/main/common/lib/Haver/Config.pm
===================================================================
--- trunk/main/common/lib/Haver/Config.pm 2004-06-27 02:55:25 UTC (rev
253)
+++ trunk/main/common/lib/Haver/Config.pm 2004-06-27 02:55:52 UTC (rev
254)
@@ -25,11 +25,11 @@
use base qw(Haver::Savable);
use YAML ();
use Fatal qw(:void open close);
-use File::stat;
+use Haver::Util::Misc (); # merge_struct()
use Haver::Preprocessor;
-our $VERSION = '0.02';
+our $VERSION = 0.04;
our $RELOAD = 1;
sub initialize {
@@ -40,24 +40,20 @@
$me->filename(delete $me->{file});
}
- if (exists $me->{default}) {
- $me->{_default} = delete $me->{default};
- }
-
+ $me->{_default} = delete $me->{default};
+
#DEBUG(paranoid): "Config file: ", $me->filename;
if ($me->filename) {
$me->load;
}
}
+
sub _init_data {
my ($me) = @_;
- my $h = delete $me->{_default};
-
- if ($h) {
- foreach my $key (keys %$h) {
- $me->{$key} = $h->{$key};
- }
+
+ if ($me->{_default}) {
+ %$me = %{Haver::Util::Misc::merge_struct($me, $me->{_default})};
}
}
@@ -66,7 +62,7 @@
#ASSERT: ref($data) eq 'HASH' or UNIVERSAL::isa($data, 'HASH');
foreach my $k (keys %$data) {
- $me->{$k} = $data->{$k};
+ $me->{$k} = Haver::Util::Misc::merge_struct($me->{$k},
$data->{$k});
}
}
Modified: trunk/main/common/lib/Haver/Savable.pm
===================================================================
--- trunk/main/common/lib/Haver/Savable.pm 2004-06-27 02:55:25 UTC (rev
253)
+++ trunk/main/common/lib/Haver/Savable.pm 2004-06-27 02:55:52 UTC (rev
254)
@@ -21,10 +21,12 @@
use base qw( Haver::Base );
use Fatal qw(:void open close);
-use File::stat ();
-use File::Basename ();
-use File::Path ();
+use File::stat (); # OO stat
+use File::Basename (); # basename()
+use File::Path (); # mkpath()
+
+
use Carp;
our $VERSION = 0.02;
@@ -35,7 +37,6 @@
$me->{_mtime} = -1;
$me->{_overwrite} = 0;
- $me->{_default} = delete $me->{default};
}
sub load {
@@ -76,13 +77,8 @@
return $data;
}
-sub _init_data {
- my ($me) = @_;
+sub _init_data { }
- if ($me->{_default}) {
- }
-}
-
sub save {
my ($me) = @_;
my $filename = $me->filename;