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;


Reply via email to