Config-INI-RefVars
view release on metacpan or search on metacpan
lib/Config/INI/RefVars.pm view on Meta::CPAN
_check_args(\%args, $allowed_keys);
foreach my $scalar_arg (qw(tocopy_section src_name)) {
croak("'$scalar_arg': must not be a reference") if ref($args{$scalar_arg});
}
delete $self->{+SRC_NAME} if exists($self->{+SRC_NAME});
$self->{+SRC_NAME} = $args{src_name} if exists($args{src_name});
my ( $cleanup, $src, $tocopy_section, $tocopy_vars, $not_tocopy) =
@args{qw(cleanup src tocopy_section tocopy_vars not_tocopy)};
croak("'src': missing mandatory argument") if !defined($src);
my $backup = $self->{+BACKUP} //= {};
if (defined($tocopy_section)) {
$backup->{tocopy_section} = $self->{+TOCOPY_SECTION};
$self->{+TOCOPY_SECTION} = $tocopy_section;
}
else {
$tocopy_section = $self->{+TOCOPY_SECTION};
}
$self->{+CURR_TOCP_SECTION} = $tocopy_section;
$Globals{'=TO_CP_SEC'} = $tocopy_section;
if ($tocopy_vars) {
$backup->{tocopy_vars} = $self->{+TOCOPY_VARS};
$self->$_check_tocopy_vars($tocopy_vars, 1);
}
if ($not_tocopy) {
$backup->{not_tocopy} = $self->{+NOT_TOCOPY};
$self->$_check_not_tocopy($not_tocopy, 1)
}
$self->{+SECTIONS} = [];
$self->{+SECTIONS_H} = {};
$self->{+EXPANDED} = {};
$self->{+VARIABLES} =
{$tocopy_section => ($self->{+TOCOPY_VARS} ? {%{$self->{+TOCOPY_VARS}}} : {})};
my $global_vars = $self->{+GLOBAL_VARS} = {%Globals};
my $variables = $self->{+VARIABLES};
lib/Config/INI/RefVars.pm view on Meta::CPAN
}
@{$tocopy_sec_vars}{keys(%$global_vars)} = values(%$global_vars);
}
else {
while (my ($section, $sec_vars) = each(%{$variables})) {
$sec_vars->{'='} = $section;
@{$sec_vars}{keys(%$global_vars)} = values(%$global_vars);
}
}
}
$self->{+TOCOPY_SECTION} = $backup->{tocopy_section} if exists($backup->{tocopy_section});
$self->{+TOCOPY_VARS} = $backup->{tocopy_vars} if exists($backup->{tocopy_vars});
$self->{+NOT_TOCOPY} = $backup->{not_tocopy} if exists($backup->{not_tocopy});
$backup = {};
return $self;
}
sub current_tocopy_section {$_[0]->{+CURR_TOCP_SECTION}}
sub tocopy_section {$_[0]->{+TOCOPY_SECTION}}
sub global_mode {$_[0]->{+GLOBAL_MODE}}
sub sections { defined($_[0]->{+SECTIONS}) ? [@{$_[0]->{+SECTIONS}}] : undef}
sub sections_h { defined($_[0]->{+SECTIONS_H}) ? +{ %{$_[0]->{+SECTIONS_H}} } : undef }
sub separator {$_[0]->{+SEPARATOR}}
t/09-args.t view on Meta::CPAN
'foo' => 'override!'
}
},
'variables(), cleanup => 0');
};
};
subtest "backup / restore" => sub {
my $orig_tocopy_section = "!all!";
my $src = ['[sec]'];
my $orig_expected = {
$orig_tocopy_section => {
'a' => '1',
'b' => '2',
'c' => '3',
'd' => '4'
},
'sec' => {
( run in 1.610 second using v1.01-cache-2.11-cpan-49f99fa48dc )