Config-Model

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

    * 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

Changes  view on Meta::CPAN


        * 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 )