Author: dylan
Date: 2004-06-26 23:49:09 -0400 (Sat, 26 Jun 2004)
New Revision: 256
Modified:
trunk/main/common/lib/Haver/Config.pm
trunk/main/common/lib/Haver/Util/Misc.pm
Log:
Merging is now an option for Haver::Config.
Merging will only be done if Haver::Config->new is called
with merge => 1.
Added some more assertions to Haver::Util::Misc.
Modified: trunk/main/common/lib/Haver/Config.pm
===================================================================
--- trunk/main/common/lib/Haver/Config.pm 2004-06-27 02:58:55 UTC (rev
255)
+++ trunk/main/common/lib/Haver/Config.pm 2004-06-27 03:49:09 UTC (rev
256)
@@ -41,6 +41,7 @@
}
$me->{_default} = delete $me->{default};
+ $me->{_merge} = delete $me->{merge};
#DEBUG(paranoid): "Config file: ", $me->filename;
if ($me->filename) {
@@ -53,7 +54,8 @@
my ($me) = @_;
if ($me->{_default}) {
- %$me = %{Haver::Util::Misc::merge_struct($me, $me->{_default})};
+ my $d = delete $me->{_default};
+ %$me = (%$me, %$d);
}
}
@@ -61,8 +63,10 @@
my ($me, $data) = @_;
#ASSERT: ref($data) eq 'HASH' or UNIVERSAL::isa($data, 'HASH');
- foreach my $k (keys %$data) {
- $me->{$k} = Haver::Util::Misc::merge_struct($me->{$k},
$data->{$k});
+ if (not $me->{_merge}) {
+ %$me = (%$me, %$data);
+ } else {
+ %$me = %{ Haver::Util::Misc::merge_struct($data, $me) };
}
}
Modified: trunk/main/common/lib/Haver/Util/Misc.pm
===================================================================
--- trunk/main/common/lib/Haver/Util/Misc.pm 2004-06-27 02:58:55 UTC (rev
255)
+++ trunk/main/common/lib/Haver/Util/Misc.pm 2004-06-27 03:49:09 UTC (rev
256)
@@ -41,7 +41,7 @@
sub parse_datetime {
- # ASSERT: @ == 1;
+ # ASSERT: @_ == 1;
my $str = shift;
require Date::Parse;
# patterns
@@ -80,6 +80,7 @@
# Author: bdonlan
sub merge_hash {
+ # ASSERT: reftype($_[0]) eq 'HASH' and reftype($_[1]) eq 'HASH';
my ($left, $right) = @_;
my %merged = %$left;
for (keys %$right) {
@@ -94,6 +95,7 @@
# Author: bdonlan
sub merge_array {
+ # ASSERT: reftype($_[0]) eq 'ARRAY' and reftype($_[1]) eq 'ARRAY';
my ($left, $right) = @_;
return [EMAIL PROTECTED], @$right];
}