AC-MrGamoo
view release on metacpan or search on metacpan
lib/AC/MrGamoo/Submit/Compile.pm view on Meta::CPAN
return $b;
}
sub _compile_config {
my $me = shift;
my $tag = shift;
my $c = {};
while(1){
my $line = $me->_next();
$me->_die("end of file reached looking for end of '$tag' section") unless defined $line;
return $c if $line =~ m|^</%$tag>\s*$|;
$line =~ s/^\s+//;
$line =~ s/\s+$//;
my($k, $v) = split /\s+=>\s*/, $line, 2;
$c->{$k} = $v;
}
}
sub _add_block {
my $me = shift;
my $tag = shift;
my $blk = shift;
my $d = $COMPILE{$tag};
if( $d->{multi} ){
push @{$me->{content}{$tag}}, $blk;
}else{
$me->_die("redefinition of '$tag' section") if $me->{content}{$tag};
$me->{content}{$tag} = $blk;
}
}
sub add_config {
my $me = shift;
my $cfg = shift;
$me->_add_config('config', $cfg);
}
sub _add_config {
my $me = shift;
my $tag = shift;
my $cfg = shift;
my $d = $COMPILE{$tag};
if( $d->{multi} ){
# merge
@{ $me->{content}{$tag} }{ keys %$cfg } = values %$cfg;
}else{
$me->_die("redefinition of '$tag' section") if $me->{content}{$tag};
$me->{content}{$tag} = $cfg;
}
}
sub set_initres {
my $me = shift;
my $ir = shift;
$me->{initres} = $ir;
}
sub set_config {
my $me = shift;
my $cfg = shift;
$me->{content}{config} = $cfg;
}
sub get_config_param {
my $me = shift;
my $k = shift;
return $me->{content}{config}{$k};
}
sub set_config_param {
my $me = shift;
my $k = shift;
my $v = shift;
return $me->{content}{config}{$k} = $v;
}
sub _check {
my $me = shift;
for my $s (keys %COMPILE){
next unless $COMPILE{$s}{required};
next if $me->{content}{$s};
$me->_die("missing required section '$s'");
}
1;
}
1;
( run in 1.325 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )