Config-Model
view release on metacpan or search on metacpan
* Value model: add update parameter to specify how to load
value from INI, YAML, JSON or TOML file when running "cme update"
comand
* Loader: add function to load data from INI files
* Node: can extract gist from a array element
* Warper: allow warping from hidden element
* AnyId: add fetch_size method
Bug fixes:
* Loader: fix bug with function call like .b("bar","foo(a > b)")
* ObjTreeScanner: add missing callbacks for file and dir value types
Doc update:
* Node: add filter parameter doc for apply_fixes()
Dependencies:
* switch from Config::IniFiles to Config::INI::Reader and make this dependency optional
* switch YAML::Tiny to YAML::PP and make this dependency optional
* make JSON and TOML::Tiny dependencies optional
2.156 2026-02-02
* lib/Config/Model/Dumper.pm (dump_tree): Correctly quote values
in list elements
* lib/Config/Model/HashId.pm: Ported to
Log4Perl (Tree::Element::Hash class)
* lib/Config/Model/Instance.pm (write_back): Croak if no
write_back callbacks were registered
0.640 2009-09-09
* lib/Config/Model/WizardHelper.pm (new): Correctly scan list
element.
0.639 2009-07-30
* lib/Config/Model/WizardHelper.pm (leaf_element_cb): bug fix:
scan correctly leaf elements of a hash.
lib/Config/Model/Iterator.pm view on Meta::CPAN
Subroutine called backed for leaf elements. See
L<Config::Model::ObjTreeScanner/"Callback prototypes"> for signature
and details. (mandatory)
=head2 hash_element_cb
Subroutine called backed for hash elements. See
L<Config::Model::ObjTreeScanner/"Callback prototypes"> for signature
and details. (mandatory)
=head1 Custom callbacks
By default, C<leaf_cb> is called for all types of leaf elements
(i.e enum. integer, strings, ...). But you can provide dedicated
call-back for each type of leaf:
enum_value_cb, integer_value_cb, number_value_cb, boolean_value_cb,
uniline_value_cb, string_value_cb
Likewise, you can also provide a call-back dedicated to list elements with
C<list_element_cb>
lib/Config/Model/ObjTreeScanner.pm view on Meta::CPAN
$self->{leaf_cb} = delete $args{leaf_cb}
or croak __PACKAGE__, "->new: missing leaf_cb parameter";
# TODO: switch to warning in 2027
if (delete $args{fallback}) {
my ($package, $filename, $line) = caller;
$logger->info("fallback parameter is deprecated. Called from $filename:$line");
}
# we may use leaf_cb
$self->create_default_callbacks();
# get all call_backs
foreach my $param (
qw/check node_element_cb hash_element_cb
list_element_cb check_list_element_cb node_content_cb
node_content_hook list_element_hook hash_element_hook
auto_vivify up_cb/, @value_cb
) {
$self->{$param} = $args{$param} if defined $args{$param};
delete $args{$param}; # may exists but be undefined
lib/Config/Model/ObjTreeScanner.pm view on Meta::CPAN
croak __PACKAGE__, "->new: unexpected check: $self->{check}"
unless $self->{check} =~ /yes|no|skip/;
croak __PACKAGE__, "->new: unexpected parameter: ", join( ' ', keys %args )
if scalar %args;
return $self;
}
# internal
sub create_default_callbacks ($self) {
foreach my $item (qw/node_content_hook hash_element_hook list_element_hook/) {
$self->{$item} = sub { };
}
my $node_content_cb = sub {
my ( $scanner, $data_r, $node, @elements ) = @_;
foreach my $item (@elements) { $scanner->scan_element( $data_r, $node, $item ) };
};
my $node_element_cb = sub {
lib/Config/Model/ObjTreeScanner.pm view on Meta::CPAN
All these call-backs are called on the elements of a node:
C<list_element_cb>, C<check_list_element_cb>, C<hash_element_cb>,
C<node_element_cb>, C<node_content_cb>.
=item element hooks:
C<list_element_hook>, C<hash_element_hook>.
=back
The user may specify callbacks them by passing a sub ref to the
constructor:
$scan = Config::Model::ObjTreeScanner-> new
(
list_element_cb => sub { ... },
...
)
C<leaf_cb> callback is mandatory. Other callbacks are provided by default.
Optional parameter:
=over
=item fallback
Deprecated with version 2.159. This parameter is now ignored and
default callbacks are always provided.
=item auto_vivify
Whether to create configuration objects while scanning (default is 1).
=item check
C<yes>, C<no> or C<skip>.
=back
( run in 0.881 second using v1.01-cache-2.11-cpan-39bf76dae61 )