App-Config-Chronicle
view release on metacpan or search on metacpan
lib/App/Config/Chronicle.pm view on Meta::CPAN
return;
}
sub _create_attributes {
my $self = shift;
my $definitions = shift;
my $containing_section = shift;
$containing_section->meta->make_mutable;
foreach my $definition_key (keys %{$definitions}) {
$self->_validate_key($definition_key, $containing_section);
my $definition = $definitions->{$definition_key};
if ($definition->{isa} eq 'section') {
$self->_create_section($containing_section, $definition_key, $definition);
$self->_create_attributes($definition->{contains}, $containing_section->$definition_key);
} elsif ($definition->{global}) {
$self->_create_global_attribute($containing_section, $definition_key, $definition);
} else {
$self->_create_generic_attribute($containing_section, $definition_key, $definition);
}
}
lib/App/Config/Chronicle.pm view on Meta::CPAN
},
documentation => $definition->{description},
writer => $writer,
);
$section->$writer($attribute);
return $attribute;
}
sub _validate_key {
my $self = shift;
my $key = shift;
my $section = shift;
if (grep { $key eq $_ } qw(path parent_path name definition version data_set check_for_update save_dynamic refresh_interval)) {
die "Variable with name $key found under "
. $section->path
. ".\n$key is an internally used variable and cannot be reused, please use a different name";
}
( run in 0.568 second using v1.01-cache-2.11-cpan-a5abf4f5562 )